Перейти к содержимому

tankist's блог

  • записи
    2
  • комментариев
    6
  • просмотра
    8 873

Записи в этом блоге

tankist

Перевод getmonero.org (часть 2)

Цели разработки

https://getmonero.org/design-goals/

 

Выполнено:

[v] реализация встроенной LMDB

[v] вынос кода в демоны (корректное фоновое разветвление)

[v] реализация аварийного переключения на BerkeleyDB

[v] поддержка 32-битной и ARM архитектуры

[v] Мини-цепь / разовое скачивание и быстрая синхронизация

[v] Замена межпроцессного RPC на IPC с использованием ZeroMQ

[v] SSL/TLS и аутентификация RPC с использованием net_skeleton

 

Текущие задания:

· Запаковка в библиотеки (узел, учётная запись, консенсус, RPC)

· Транзакции с выборочным пожертвованием разработчикам

· Обработка неподтверждённых транзакций на стороне клиента

· Умный майнинг (постоянный, в фоновом режиме)

 

Графический интерфейс и др.:

· Подпись адреса и транзакций, экспорт ключей

· Оптимизация скорости алгоритма EdDSA

· Перемещение хранилища учётной записи во встроенную БД

· реализация графического интерфейса ядра (узла и кошелька)

· интеграция с i2p (только i2p, мост i2p/IP, классический IP)

 

Дополнения для коммерции:

· Уведомления кошелька/блоков

· Изолированный сторожевой таймер (watchdog stub) демона и RPC-клиента

· Реализация нового RPC API

· Реализация совместимости с RPC API Биткойна

· Поддержка Proxy на сетевом уровне

 

В настоящее время, ведутся исследования:

[v] Скрытого идентификатора платежа с сериализацией в адрес получателя

[v] Конфиденциальных кольцевых транзакций, скрывающие суммы платежей

· Нового алгоритма сложности

· Транзакций с мульти-подписями (М-из-N подписей)

 

Фундаментальные работы по боковым цепям:

· Без-монетный совмещённый майнинг

· Межцепочные свопы

· Функциональность публикации узлов, подсетей и/или поддерживаемых цепей

· Формализация дочерних цепей (вне-цепочные транзакции с периодической фиксацией в главной цепи)

· Внутрицепочная, довещательная двухфакторная аутентификация (фундамент для SMS, Google Auth, YubiKey, транцакции с 2FA)

 

Изначальные цепи:

· Экспериментальная дочерняя цепь Tippero (сверх-облегчённая, для микротранзакций, с фиксацией в главной цепи несколько раз в сутки)

· MoneroID (приватное или публичное удостоверение личности; может выступать в качестве группы, включающей другие идентичности или группы идентичностей; может использоваться как логин)

· MoneroDNS (домены с расширением .х с поддержкой всех полей данных DNS, включая DNSSEC; локальный DNS сервер для разрешения имён)

· MoneroTrust (сеть доверия между идентичностями как фундамент для взаимодействия; пересмотр рейтингов каждые 12 месяцев)

 

Следующий уровень исследований:

· MoneroChat (шифрованная передача сообщений с промежуточным хранением (store and forward), включая платёжные запросы)

· MoneroAssets (рынки активов в боковых цепях, межцепочная торговля)

· MoneroTrade (децентрализованная электронная коммерция, с ежемесячной корректировкой предлагаемых товаров и услуг для поддержки актуальности рынка)


 

Основной состав команды Монеро

https://getmonero.org/knowledge-base/people

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

 

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

 

Riccardo „fluffypony“ Spagni (ric@getmonero.org) выходец из Южной Африки, разработчик программного обеспечения с серьёзной деловой хваткой и глубоким пониманием криптовалют. Вовлечён в крипто-проекты с 2012 года.

 

David Latapie (david@getmonero.org) французский публицист, гуманист и крипто-энтузиаст. Работал с различными криптовалютами. В фокусе – отслеживание социальных изменений, вызванные «криптой» и технологией блокчейна.

 

smooth (smooth@getmonero.org) разработчик программного обеспечения, предприниматель, инвестор. Участвовал в различных крипто-проектах с 2011 года, внёс вклад в разработку первой мультивалютной биржи (с поддержкой Bitcoin и Namecoin). Имеет стаж и репутацию в сообществе.

 

othe (othe@getmonero.org): из Германии, интересуется криптовалютами с начала 2011 года. В настоящее время работает независимым консультантом в криптовалютной коммерции. Получил известность как один из ведущих разработчиков Vertcoin.

 

tacotime (tacotime@getmonero.org): энтузиаст биоинформатики и разработчик программного обеспечения из Торонто. Вовлечён в криптовалюты с 2011 года. Прославился благодаря своему вкладу в гибридный PoW/PoS форк MC2, а также проекту btcd.

 

NoodleDoodle (noodledoodle@getmonero.org): бывший инженер из Кремниевой Долины, опытный программист и разработчик аппаратных средств. Состоит в криптовалютном сообществе с 2012 года, в настоящее время работает в университете по «классной аэрокосмической теме».

 

eizh (eizh@getmonero.org): Американский исследователь и академик, специализирующийся в области физики и научных вычислений. Имеет академический интерес к криптовалютам, в частности к серьёзным альтернативам Биткойна.

 

Содействие разработке

Многие приняли участие в написании кода Монеро. С полным списком участников можно ознакомиться на странице Github Contributors. Выдающийся вклад в разработку внесли: Thomas Winget, mikezackles, oranjuice, warptangent, rfree, moneromooo, jakoblind, tomerkon.

 

 

Исследовательская лаборатория Монеро

Основной состав команды Монеро является неотъемлемой частью исследовательской лаборатории. Ведущие работники лаборатории - исследователи, учёные и академики – в настоящее время действуют под псевдонимами:

 

Surae Noether: ведущий исследователь, кандидат математических наук, с глубоким пониманием криптографии и гомологической алгебры.

 

Sarang Noether: магистр математических наук, в настоящее время завершает докторскую степень в области физики, уделяет свободное время на продвижения исследований Монеро.

 

Shen Noether: аспирант алгебраической геометрии, со знаниями в области криптографии, участвует в научно-исследовательской деятельности лаборатории.

 

С публикациями можно ознакомиться по адресу https://lab.getmonero.org/

 

Другие сотрудники

С момента создания Монеро, cвою лепту в разработку внесли: zone117x, LucaseJones, wolf0, Professor David Andersen, @Atrides, wallet42, Neozaru, Gingeropoulos, cAPSLOCK и многие другие

 


 

Глоссарий

https://getmonero.org/knowledge-base/moneropedia/

 

Адрес – это запись, которая однозначно определяет получателя средств. Исходный адрес состоит из 95 символов и начинается с цифры 4; например, пожертвования разработчикам Монеро можно отправить на адрес 46BeWrHpwXmHDpDEUmZBWZfoQpdc6HaERCNmx1pEYL2rAcuwufPN9rXHHtyUA4QVy66qeFQkn6sfK8aHYjA3jk3o1Bv16em

Поскольку адреса Монеро длинные и сложные, то в качестве альтернативы можно использовать OpenAlias. К примеру, пожертвования можно перечислить на donate@getmonero.org или donate.getmonero.org

 

Дополнительная информация - https://openalias.org

 

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

 

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

 

Блоки рассчитываются при помощи «майнинга». Узел, рассчитавший новый блок, передаёт его всем «соседям», с которыми установлено соединение, и впоследствии эти «соседи» ретранслируют блок до принятия его во всей сети Монеро.

 

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

 

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

 

Ключ просмотра – пара открытых/закрытых ключей учётной записи, с помощью которых можно увидеть все записи приходо-расходных операций владельца счёта. Для просмотра истории сделок требуется закрытый (секретный) ключ владельца.

 

Ключ расходов – пара открытых/закрытых ключей учётной записи, позволяющие расходовать средства. Для подписи исходящего платежа используется закрытый (секретный) ключ.

 

Кольцевая подпись – групповая криптографическая подпись, по крайней мере, с одним реальным участником, причём все участники группы неотличимы друг от друга.

 

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

 

Криптовалюта – это не имеющая центрального управления цифровая валюта, существование которой основано на принципах распределённой пиринговой сети.

 

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

 

Майнинг – процесс криптографического вычисления математического доказательства блока, содержащего N транзакций, и добавление вычисленного блока в блокчейн.

 

Мнемонические коды – набор из 13 или 25 слов для восстановления учётной записи. Доступны на разных языках.

 

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

 

Сгенерировать идентификатор можно с помощью OpenSSL:

# openssl rand 32 -hex

Сдача – средства как часть транзакции, которые возвращаются на счёт отправителя.

 

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

 

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

 

Транзакция – это контейнер с криптографической подписью, содержащий информацию о перечислении средств (Монеро) получателям.

 

Параметры транзакции: один или несколько получателей, сумма платежа и значение <mixin_count>, устанавливающее количество выходов, в которые будет «замешана» транзакция. Большие значения <mixin_count> повышают уровень анонимности платежа, но в результате увеличивается размер транзакции и, соответственно, растут комиссионные.

 

Каждой транзакции присваивается уникальный идентификатор Transaction ID, который выражается 32-байтовой строкой (64 шестнадцатеричных символов).

 

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

 

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

 

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

 

Узел – хранящее полную копию блокчейна и подключенное к всемирной сети устройство, на котором выполняется программное обеспечение Монеро.

 

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

 

OpenAlias – стандарт, позволяющий использовать FQDN или адрес электронной почты для платежей Монеро.

tankist

blog-0551792001438513753.jpgЧто такое Монеро?

https://getmonero.org/home

 

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

 

Вы являетесь своим собственным банком, вы распоряжаетесь своими собственными средствами – и никто не может отследить ваши переводы.

 

 

 

Безопасность

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

 

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

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

 

Неотслеживаемость

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

 


Учётная запись Монеро

https://getmonero.org/knowledge-base/moneropedia/account

 

В сети Монеро, привычный термин «кошелёк» заменён на «account», что можно перевести как «учётная запись» или «лицевой счёт». Счёт принадлежит и управляется конечным пользователем Монеро.

 

Учётная запись включает в себя полный список ваших транзакций, а баланс на счету – это сумма всех поступлений минус сумма всех расходов. Следует отметить, что на счету могут иметься «разблокированные» и «заблокированные» средства, то есть вы можете их расходовать сразу или же через некоторое время. Например, если создать транзакцию с установленной «продолжительностью блокировки» или же запросить возвращения части средств на ваш счёт (сдачу) – то такие средства будут временно заблокированы.

 

Учётная запись Монеро находится под вашим управлением и в виде файлов обычно хранится на вашем компьютере. Третьи лица не смогут получить доступа к вашей учётной записи при соблюдении рекомендуемых мер по безопасности.

 

Открытие счетов

Это бесплатная операция, небольшие комиссионные взымаются только при осуществлении транзакций.

 

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

 

Криптографические ключи

Монеро – это криптосистема с открытым ключом, с детальным описанием принципов ассиметричного шифрования можно ознакомиться в статье Википедии.

 

Учётная запись Монеро включает две пары ключей: для расходов и для просмотра. Расходный ключ используется при отсылке средств, а «смотровой» ключ позволяет приоткрыть завесу конфиденциальности, например, для предоставления доказательства совершённой сделки аудитору или бухгалтеру. Обе пары открытых/закрытых ключей играют важную роль в обеспечении приватности транзакций Монеро.

 

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

 

Восстановление учётной записи

Файлы учётной записи могут быть восстановлены, даже если они были утеряны в результате отказа накопителя или просто случайно стёрты. При создании нового адреса, приложение simplewallet генерирует 25 слов, так называемые мнемонические коды. Например, если просто записать эти 25 слов на бумажку и положить в сейф – то ваша учётная запись становится защищенной от порчи или пропажи. Пример создания нового адреса в приложении simplewallet:

 

blogentry-16480-0-02246000-1438509449.png

 

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

 

Рекомендуемые меры по безопасности

Храните мнемонические коды в надёжном месте и задайте сложный пароль доступа к simplewallet. Никому не давайте свой пароль и следите за обновлением антивирусных программ (особенно в Windows). Проявляйте осторожность при нажатии ссылок в почте и на сайтах, в случае заражения активный код вредоносного п/о может ожидать вашей авторизации в simplewallet с последующим перехватом управления счётом.

 

Передача учётной записи ближайшему родственнику

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

 


 

Запуск узла Монеро

https://getmonero.org/getting-started/running

 

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

 

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

Чтобы не использовать домашнее подключение, можно прибрести хостинг виртуального сервера. Мы настоятельно рекомендуем хостинг InterServer.net с купоном ’MONERO’. Использование данного купона наряду с нашей авторской ссылкой содействует делу финансирования разработчиков Монеро.

 

Код Монеро способен выполнятся на любом железе, включая 32-битовые и ARM системы. Воспользуйтесь разделом Загрузки для скачивания исполняемых файлов.

 

Эксплуатация узла

Кроме скачивания и распаковки файлов, в принципе, больше ничего не требуется.

 

Windows: в приложении Проводник (Windows Explorer) найдите и запустите bitmonerod.exe двойным щелчком мыши. Если приложение открывается и сразу закрывается – воспользуйтесь приложением Командная Строка (cmd.exe)

 

OS X: через приложение Finder найдите и запустите bitmonerod двойным щелчком мыши. Если приложение открывается и сразу закрывается – воспользуйтесь приложением Terminal

 

Linux: в настольной или серверной версиях операционной системы, bitmonerod можно запустить как из графической сессии, так и через консоль.

 

Проверка работы узла

При запуске узла появляется консольное окно:

 

blogentry-16480-0-79286000-1438509449.png

 

Процесс синхронизации цепочки блоков отображается жёлтым текстом. Сообщение «syncronized OK» означает окончание синхронизации. Для завершения работы с узлом, в консольное окно необходимо ввести команду «exit». Если завершить работу узла другим способом – изменения в цепочке блоков не будут сохранены, что значительно увеличит время синхронизации при следующем запуске.

 


 

Приём платежей Монеро

https://getmonero.org/getting-started/accepting

 

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

 

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

 

Идентификатор платежа – это псевдослучайное шестнадцатеричное число, длинной 64 символа, которое генерируется на стороне мерчанта. Пример такого идентификатора: 666c75666679706f6e7920697320746865206265737420706f6e792065766572

 

Проверка платежа в приложении simplewallet

С помощью команды «payments» с последующим указанием идентификатора, получаем детали транзакции:

 

blogentry-16480-0-24304200-1438509449.png

 

Пошаговая инструкция запроса платежа

- генерация идентификатора платежа

- отсылка адреса Монеро и идентификатора плательщику

- проверка платежа в приложении simplewallet

 

Программные методы проверки платежей

Осуществляются с помощью удалённого вызова процедур в формате JSON.

 

get_payments: проверка одного конкретного платежа, обязательный параметр <payment_id>

 

get_bulk_payments: рекомендуемый метод проверки с двумя параметрами: массив платёжных идентификаторов в формате JSON <payment_ids> и порядковый номер блока <min_block_height> , с которого следует начинать сканирование. Второй параметр можно не указывать, в этом случае будет просканирована вся цепочка блоков.

 

Пример:

 

blogentry-16480-0-15894000-1438509448.png

 

Следует отметить, что значение «amount» данного примера выражено в базовых единицах Монеро, которых вы не увидите в приложениях конечных пользователей. Некоторые транзакции могут быть разбиты на несколько частей, поэтому для проверки «итого» вам понадобится сгруппировать мелкие транзакции по <tx_hash> или по <payment_id>, после чего эти части следует просуммировать. Кроме того, множество выходов с одинаковыми суммами может привести к путанице, поэтому самым действенным методом проверки является удалённый вызов процедуры get_bulk_payments.

 

Перед сканированием платежей, имеет смысл воспользоваться процедурой get_info, которая отобразит последние полученные блоки. Эта информация в свою очередь полезна для get_bulk_payments, в качестве параметра <min_block_height>.

 

Программное сканирование платежей

- запросить текущий порядковый № блока; продолжать, если № увеличился с предыдущего сканирования

- вызвать get_bulk_payments с указанием № блока и списком платёжных идентификаторов

- сохранить № блока как «последний просканированный»

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

 

 


 

Продолжение - часть 2

 


×