Our website is made possible by displaying online advertisements to our visitors.
Please consider supporting us by disabling your ad blocker.

This White Paper is temporary. We are writing the final one that will be posted here. Check back when this warning is removed. Thanks for your patience.


Krypto₣ranc: Возрождение французской валюты

1. Введение

В 1999 году евро заменил французскую валюту: франк. Люди со всего мира оставили 3 года, чтобы вернуть все свои франки. В 2002 году франк исчез после более чем 700 лет существования, чтобы освободить место для евро. Франк был верным образ французской культуры и успеха. В 2010 году Центробанк Франции оценил более чем 4 миллиарда франков не были возвращены и все еще находятся в обращении в руках людей. Со временем снятие франка оставило горький вкус. Хотя рост ВВП в 1999 году составил + 3%, с тех пор он никогда не приближается к этому показателю. Многие видели эту жертву в начале французского экономического спада и потери суверенитета. В то время было невозможно, чтобы люди меняли ход вещей, проводилась беспрецедентная пропагандистская кампания в про-евро, все основные СМИ и все самые влиятельные люди подталкивали к уничтожению франка. Но с тех пор все изменилось. С изобретением технологии блокаторов Сатоши Накамото и ростом bitCoin теперь для правильной команды с правильными техническими навыками теперь можно создать валюту без одобрения какого-либо органа. Мы - эта команда, так почему бы не сделать это? Krypto₣ranc - невероятное возрождение франка. Это не новая технологическая революция в области блокхейна, но революционная идея: переделать то, что было уничтожено бюрократами, народом для народа, открытым исходным кодом, свободным и непреодолимым!

2. Технологии

Для достижения этой цели нет необходимости воссоздать колесо. BitCoin - самая популярная криптовалюта в мире, в которой более 500 участников и более 20 000 вилок в Github, команда bitCoin улучшает работу Satoshi и регулярно публикует улучшения. По этой причине мы хотим оставаться как можно ближе к bitCoin. Krypto₣ranc должен быть надежной валютой, основанной на безупречной концепции, и мы не добавим никакого экзотического кода, который мог бы поставить под угрозу безопасность инженерных работ Сатоши Накамото. Мы будем использовать как можно больше для ядра bitCoin, поэтому мы можем обновить Krypto₣ranc по пути оригинальной криптовалюты и наиболее популярных, как можно быстрее после каждого обновления и каждой новой версии.

Проще говоря, Krypto₣ranc - bitCoin, но с другим блочным ключом, с другим поведением, адаптированным к этому конкретному проекту, так что Krypto₣ranc становится основной валютой в мире. Но технология blockchain точно такая же.

Krypto₣ranc основан на системе POW (Proof of Work), потому что вы не можете усилить безопасность каждой транзакции и цепочки блоков в целом, не затрудняя дешифрование, POW - самый безопасный и надежный способ сделать это. Метод POW необходим для защиты блокады от злоумышленников, и мы не будем вводить ничего, что могло бы снизить его безопасность. Мы также хотим оставаться совместимыми со всеми шахтерами и пулами, которые запускают bitCoin: Krypto₣ranc так же прост в использовании, как bitCoin

В чем разница между долларами США и евро? Их функции одинаковы, мы можем покупать и продавать. Те же рассуждения применимы и к блочным целям. Реальная разница - это количество напечатанных монет и принятие людей. В нашем сознании нет сомнений, что Krypto₣ranc будет предпочтительной валютой пользователей франка по сравнению с bitCoin, которую многие считают чистым спекулятивным и экспериментальным объектом.

3. Цель

Цель Krypto₣ranc должна быть принята в качестве резервной валюты французским правительством. Мы полагаем, что финансовая система переживет серьезный кризис, и золото не сможет сэкономить евро в этом сценарии. Без криптовалюты в качестве резервной валюты еврозона рухнет в полный хаос. Когда это произойдет, людям некуда будет экономить свое богатство, кроме криптовалюты, это будет единственное безопасное место. Французы знают франк, и Krypto₣ranc будет их альтернативным выбором в случае финансового краха, чтобы заменить деньги. Мы считаем, что такая страна, как Франция, должна иметь достаточно криптофранка, чтобы иметь возможность печатать банкноты и монеты из криптовалюты, что было бы верной мерой, чтобы избежать драматической ситуации в случае провала недостающих денежных средств в евро для экономии экономики. Мы также считаем, что каждая страна в еврозоне должна иметь двойную систему наличных денег, с нотами в обращении в евро и в Krypto₣ranc, bitMark, bitLire, BitPesos и т. Д. ...

4. излучение

Как объяснялось ранее, блок-цепочка Krypto₣ranc не будет такой же, как у bitCoin. Мы выставим 6.55 млрд. Криптофранков между 1 января 2019 года и 1 января 2022 года. Таким образом, мы будем сопоставлять капитализацию французского Центрального банка. Затем после этого у нас будет генерация дефляционной монеты, которая достигнет в общей сложности 20 миллиардов за 200 лет.

2.5. Миллионы криптофранков будут предварительно профинансированы и распределены между авторами Krypto₣ranc и использованы для финансирования обслуживания и будущего развития. Krypto₣ranc должен хорошо финансироваться, чтобы продолжить свой путь и быть поддержан в долгосрочной перспективе.


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


Биткойн: электронная наличная система одноранговой сети | Сатоши Накамото

Абстрактные

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

1. Введение

Торговля в Интернете опиралась почти исключительно на финансовые учреждения, выступающие в качестве доверенных третьих сторон для обработки электронных платежей. Хотя система работает достаточно хорошо для большинства транзакций, она по-прежнему страдает от присущих слабых сторон модели, основанной на доверии. Совершенно необратимые транзакции на самом деле невозможны, поскольку финансовые учреждения не могут избежать посредничества в спорах. Стоимость медиации увеличивает транзакционные издержки, ограничивая минимальный размер практических транзакций и ограничивая возможность для небольших случайных транзакций, и существует более высокая стоимость потери способности совершать необратимые платежи за необратимые услуги. С возможностью разворота возникает необходимость в распределении доверия. Торговцы должны с осторожностью относиться к своим клиентам, смиряя их за дополнительную информацию, чем в противном случае. Определенный процент мошенничества принимается как неизбежный. Эти затраты и неопределенности платежей можно избежать лично, используя физическую валюту, но не существует механизма для осуществления платежей по каналу связи без доверенной стороны.);?>

2. операции

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

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

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

3. Сервер Timestamp

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

4. Доказательство-оф-работы

Чтобы реализовать распределенный сервер timestamp на основе одноранговой сети, нам нужно будет использовать систему доказательств работы, похожую на Adam Back's Hashcash, а не на газеты или сообщения Usenet. Доказательство работы включает сканирование для значения, которое при хэшировании, например, с SHA-256, хеш начинается с количества нулевых бит. Требуемая средняя работа является экспоненциальной в количестве нулевых бит и может быть проверена путем выполнения одного хеша.

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

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

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

5. сеть

Шаги для запуска сети следующие:

  1. Новые транзакции передаются всем узлам.
  2. Каждый узел собирает новые транзакции в блок.
  3. Каждый узел работает над поиском сложного доказательства работы своего блока.
  4. Когда узел находит доказательство работы, он передает блок всем узлам.
  5. Узлы принимают блок только в том случае, если все транзакции в нем действительны и еще не потрачены.
  6. Узлы выражают принятие блока, работая над созданием следующего блока в цепочке, используя хэш принятого блока как предыдущий хеш.

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

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

6. стимул

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

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

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

7. Восстановление дискового пространства

После того, как последняя транзакция в монете будет похоронена в достаточном количестве блоков, потраченные транзакции до этого могут быть отброшены для сохранения дискового пространства. Чтобы облегчить это без нарушения хэша блока, транзакции хэшируются в Merkle Tree, причем только корень включен в хэш блока. Затем старые блоки можно уплотнять, удаляя ветви дерева. Внутренние хеши не нужно хранить.

Заголовок блока без транзакций будет составлять около 80 байт. Если мы предположим, что блоки генерируются каждые 10 минут, 80 байт * 6 * 24 * 365 = 4,2 МБ в год. С компьютерными системами, которые обычно продаются с 2 ГБ оперативной памяти по состоянию на 2008 год, а закон Мура, прогнозирующий текущий рост в 1,2 ГБ в год, не должен быть проблемой, даже если заголовки блоков должны храниться в памяти.

8. Упрощенная проверка платежей

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

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

9. Сочетание и разделение ценности

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

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

10. Конфиденциальность

Традиционная банковская модель достигает уровня конфиденциальности, ограничивая доступ к информации заинтересованным сторонам и доверенной третьей стороне. Необходимость объявлять все транзакции публично исключает этот метод, но конфиденциальность по-прежнему может быть сохранена, нарушая поток информации в другом месте: сохраняя открытые ключи анонимными. Публика может видеть, что кто-то посылает сумму кому-то другому, но без информации, связывающей транзакцию с кем-либо. Это похоже на уровень информации, выпущенной фондовыми биржами, где публикуется информация о времени и размере отдельных сделок, «лента», но не сообщая, кем были стороны.

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

11. вычисления

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

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

Вероятность того, что злоумышленник догонит этот дефицит, аналогичен проблеме руин Игрока. Предположим, что игрок с неограниченным кредитом начинает с дефицита и играет потенциально бесконечное количество испытаний, чтобы попытаться достичь безубыточности. Мы можем вычислить вероятность того, что он когда-либо достигнет безубыточности, или что злоумышленник когда-либо догоняет честную цепочку, следующим образом[8]:

p= probability an honest node finds the next blockq= probability the attacker finds the next blockqz= probability the attacker will ever catch up from z blocks behind

qz={1ifpq(q/p)zifp>q}

Учитывая наше предположение о том, что p>q, вероятность падает экспоненциально, поскольку количество блоков, которые атакующий должен догнать, увеличивается. Имея шансы против него, если он не делает удачный выпад вперед на ранней стадии, его шансы становятся исчезающе маленькими, поскольку он падает дальше.

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

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

The recipient waits until the transaction has been added to a block and z блоки были связаны после него. Он не знает точного количества прогресса, которое совершил атакующий, но если предположить, что честные блоки заняли среднее ожидаемое время на блок, потенциальный прогресс атакующего будет распределением Пуассона с ожидаемым значением:

λ=zqp

Чтобы получить вероятность того, что злоумышленник может догнать сейчас, мы умножаем плотность Пуассона для каждого уровня прогресса, который он мог бы сделать, с вероятностью, которую он мог бы догнать с этой точки:

k=0λkeλk!{(q/p)(zk)ifkz1ifk>z}

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

1k=0zλkeλk!(1(q/p)(zk))

Преобразование в код C ...

#include 
double AttackerSuccessProbability(double q, int z)
{
	double p = 1.0 - q;
	double lambda = z * (q / p);
	double sum = 1.0;
	int i, k;
	for (k = 0; k <= z; k++)
	{
		double poisson = exp(-lambda);
		for (i = 1; i <= k; i++)
			poisson *= lambda / i;
		sum -= poisson * (1 - pow(q / p, z - k));
	}
	return sum;
}
			

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

q=0.1
z=0    P=1.0000000
z=1    P=0.2045873
z=2    P=0.0509779
z=3    P=0.0131722
z=4    P=0.0034552
z=5    P=0.0009137
z=6    P=0.0002428
z=7    P=0.0000647
z=8    P=0.0000173
z=9    P=0.0000046
z=10   P=0.0000012

q=0.3
z=0    P=1.0000000
z=5    P=0.1773523
z=10   P=0.0416605
z=15   P=0.0101008
z=20   P=0.0024804
z=25   P=0.0006132
z=30   P=0.0001522
z=35   P=0.0000379
z=40   P=0.0000095
z=45   P=0.0000024
z=50   P=0.0000006
			

Решение для P менее 0,1% ...

P < 0.001
q=0.10   z=5
q=0.15   z=8
q=0.20   z=11
q=0.25   z=15
q=0.30   z=24
q=0.35   z=41
q=0.40   z=89
q=0.45   z=340
			

12. Вывод

Мы предложили систему электронных транзакций, не полагаясь на доверие. Мы начали с обычной структуры монет, сделанных из цифровых подписей, которая обеспечивает сильный контроль над собственностью, но является неполной без возможности предотвратить двойное расходование. Чтобы решить эту проблему, мы предложили одноранговую сеть, использующую доказательство работы для записи публичной истории транзакций, которая быстро становится нецелесообразной для злоумышленника для изменения злоумышленника, если честные узлы контролируют большую часть мощности ЦП. Сеть прочная в своей неструктурированной простоте. Узлы работают одновременно с небольшой координацией. Их не нужно идентифицировать, так как сообщения не направляются в какое-либо конкретное место и их нужно выполнять только с максимальной эффективностью. Узлы могут уходить и присоединяться к сети по своему усмотрению, принимая цепочку доказательств работоспособности в качестве доказательства того, что произошло во время их исчезновения. Они голосуют со своей мощью ЦП, выражая их принятие действительных блоков, работая над их расширением и отказом от недопустимых блоков, отказываясь работать над ними. Любые необходимые правила и стимулы могут быть соблюдены с помощью этого консенсусного механизма.

References

  1. W. Dai, "b-money," http://www.weidai.com/bmoney.txt, 1998. 
  2. H. Massias, X.S. Avila, and J.-J. Quisquater, "Design of a secure timestamping service with minimal trust requirements," In 20th Symposium on Information Theory in the Benelux, May 1999.  
  3. S. Haber, W.S. Stornetta, "How to time-stamp a digital document," In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991. 
  4. D. Bayer, S. Haber, W.S. Stornetta, "Improving the efficiency and reliability of digital time-stamping," In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993. 
  5. S. Haber, W.S. Stornetta, "Secure names for bit-strings," In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997.  
  6. A. Back, "Hashcash - a denial of service counter-measure," http://www.hashcash.org/papers/hashcash.pdf, 2002. 
  7. R.C. Merkle, "Protocols for public key cryptosystems," In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. 
  8. W. Feller, "An introduction to probability theory and its applications," 1957.