Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2017
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.42 KB | None | 0 0
  1. Прошу прощения, но по–моему это какое–то бестолковое объяснение, которое ничего не объясняет. Даже стыдно за биткоин стало как–то.
  2. Чтобы исправить ситуацию и не критиковать голословно, давайте я напишу объяснение, которое по–моему что–нибудь да объяснит.
  3.  
  4. Коля решил вести дневник. Для этого он завел тетрадку, и начал писать там строчки вроде.
  5.  
  6. 1. Купил хлеба.
  7. 2. Позвонил Геннадию.
  8. ...
  9. 132. Дал Васе в долг 100 рублей
  10. 133. Трахал Люду
  11. 134. Покакал
  12. ...
  13.  
  14. Он очень старался вести дневник честно, и если у него с кем–то возникал спор о чем–то, что произошло раньше, он доставал его и тыкал всем носом в свои записи. Однажды Коля сильно поспорил с Васей на тему того, давал ли он Васе в долг 100 рублей или нет. В момент спора у Коли не было с собой дневника, но он обещал завтра же принести и всё показать Васе.
  15.  
  16. Вася решил не искушать судьбу, пробрался к Коле в дом, нашел дневник, долистал до строчки 132, и заменил её на "Трахал Олю". На следующий день Коля достал дневник, долго искал в нём запись про долг Васе, не нашёл, и пришел извиняться.
  17.  
  18. Прошел год, Васю замучала совесть, и он признался во всём Коле. Коля простил друга, но решил, на будущее, использовать какую–нибудь более надёжную систему записи, которую нельзя было бы так просто подделывать.
  19.  
  20. Придумал он следующее. У себя в операционной системе Линупс он нашел программу md5sum, которая брала любой текст и превращала его в хеш — 32 непонятные цифры. Как именно она это делала, Коля не понимал, но в целом казалось, что она выдавала полную белиберду. Например, если в программу ввести слово "привет", она в ответ выдаёт "8b4609d7e974702ff1451220c7ededcf". А если ввести, казалось бы, почти то же самое, но с лишним пробелом, то уже "69ab827825fdb876e709abd3d783dbb6".
  21.  
  22. Почесав тыковку, Коля придумал способ усложнить будущим Васям замену записей следующим образом: После каждой записи он вставлял хеш, который получался если скормить программе текст записи и прошлый хеш. Новый дневник получался таким:
  23.  
  24. 0000 (начальный хеш, ограничимся для простоты четырьмя знаками)
  25. 1. Купил хлеба.
  26. 4178 (хеш от 0000 и "Купил хлеба")
  27. 2. Позвонил Геннадию.
  28. 4234 (хеш от 4178 и "Позвонил Геннадию")
  29. ...
  30. 4492
  31. 132. Дал Васе в долг 100 рублей
  32. 1010
  33. 133. Трахал Люду
  34. 8204 (хеш от 4234 и "Трахал Люду")
  35. ...
  36.  
  37. Если теперь какой–нибудь Вася захочет изменить строчку 132, изменится и хеш этой строчки (он будет не 1010 а чем–то другим). Это, в свою очередь, повлияет на хеш строчки 133. Трахал Люду (он будет не 8204, а чем–то другим), и так далее до конца дневника. По сути ради одной записи Васе придется подменить весь дневник после неё, что сложно.
  38.  
  39. Прошло время, Коля открыл банк. Он всё так же писал в дневничок записи "дал в долг" и "взял в кредит", снабжая их хешами. Банк разросся и однажды он дал в долг (уже новому) Васе миллион. Следующей ночью десят нанятых Васей за полмиллиона таджиков пробрались в комнату Коле, заменили запись "143313. Дал в долг Новому Васе 1000000" на "143313. Дал в долг Новому Васе 10", и по–быстрому пересчитали все хеши вплоть до конца дневника.
  40.  
  41. Чудом Коля обнаружил подмену и, раз такое дело, решил усложнить способ подделки дневника. Теперь, решил Коля, я буду в конце каждой записи в скобочках добавлять какое–нибудь число ("нонс"), и буду подбирать его так, чтобы каждый хеш заканчивался на два нуля. Единственный способ это сделать — тупо перебирать числа, пока не получится нужный хеш:
  42.  
  43. 0000 (начальный хеш, ограничимся для простоты четырьмя знаками)
  44. 1. Купил хлеба (22)
  45. 4100 (хеш от 0000 и "Купил хлеба (22)", 22 было подобрано чтобы хеш кончался на 00)
  46. 2. Позвонил Геннадию (14)
  47. 3100 (хеш от 4100 и "Позвонил Геннадию (14)")
  48. ...
  49. 1300
  50. 132. Дал Васе в долг 100 рублей (67)
  51. 9900
  52. 133. Трахал Люду (81)
  53. 8200 (хеш от 9900 и "Трахал Люду (81)")
  54. ...
  55.  
  56. Для создания каждой записи Коле теперь в среднем нужно будет перебрать порядка 50 чисел, что трудозатратно. Соответственно, если запись кто–то подменит, подделка её и всех последующих будет тоже в 50 раз сложнее, а это значит что теперь Васе даже с таджиками не справиться.
  57.  
  58. Через какое–то время Коля взял себе партнёра и они стали оба вести дневничок, причем для каждой новой записи оба одновременно начинали подбирать нонс и тот, кому первому удавалось найти подходящий, вносил запись. Так как вдвоём подбирать нонсы быстрее, Коля усложнил задачу и требовал, чтобы все хеши кончались на три нуля.
  59.  
  60. Этот окончательный Колин дневничок и есть по сути Блокчейн, только Колю с другом надо заменить на кучу соединённых по сети компьютеров, и вычисления хешей усложнить, чтобы даже компьютерам было тяжко. То есть, блокчейн — это не более чем дневничок записей, который можно записывать совместно, и в котором де–факто невозможно подделать старые записи.
  61.  
  62. Имея такой клёвый дневничок, можно строить разные интересные системы. Например, Биткоин. Биткоин — это дневничок, где каждая запись выглядит в виде "Передать столько–то денег с кошелька Х на кошелек У". Так как дневничок нельзя подделать и в нём хранится вся история переводов, в любой момент из него можно вычислить количество денег на каждом "кошельке". Ну а чтобы в системе вообще были какие–то деньги, Биткоин сделан так, что каждая запись в дневничке заканчивается словами "произвести Z монет и перевести мне", где "мне" — это тот пользователь, кто первым "угадает" нонс, который обеспечит хеш с нужным количеством нулей в конце.
  63.  
  64. Поверх дневничка с некоторым количеством криптографии можно строить ещё некоторое количество интересных систем. Например, можно делать записи в духе "Кто решит уравнение f(x) = 14, тот получает 10 монеток". Соответственно, первая запись в дневничке, где будет предоставлено решение может автоматически считаться получателем монеток. Вокруг этой и схожих идей строятся т.н. "контракты".
  65.  
  66. Но тем не менее стоит помнить, то блокчейн — это не более чем надёжный распределённый дневничок. Никаких мировых проблем, помимо тех, которые можно решить дневничком, блокчейн нам не решит. А те проблемы, которые он решит, он решит ценой гигаватт энергии, которые сейчас тратятся на подбор "нонсов", по большому счету впустую.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement