📢 Отчёт Agorise: С-IPFS, стелс и слепые транзакции, POS-системы, мобильные кошельки, graphenej

Добро пожаловать в отчёт Agorise!

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

Неделя выдалась напряжённой, сразу несколько разработчиков из команды завершают свои проекты и приступают к слиянию их кода с мастер-кодом для 7 (да, семи) различных продуктов, которые будут запущены в этом и следующем году. Среди них C-IPFS для Стелс (Stealth), децентрализация приложений и веб-сайтов, graphenej для мобильных кошельков и платёжных систем, а также новый тестнет для проверки всех этих продуктов.

C-IPFS


Работы над идентификаторами нод, Protobuf и Yamux были завершены на этой неделе. Мы провели много тестов, сделали заглушки для утечек и исправили ошибки. Клиентский режим в API возвращался с пустым запросом от сервера, причина нашлась и была исправлена. Когда мы изменили метод коммуникации на тот же, что и в Go-IPFS, то обнаружили, что это изменение сняло большое ограничение, которым была коммуникация между нашими клиентом и сервером через API-интерфейс с большими объемами двоичных данных, но GO всё еще закрывал подключение тайм-аутом. Исправлено.

https://github.com/Agorise/c-libp2p/commit/7564a4b089f9d205beafddf550d7a51bf519658a
https://github.com/Agorise/c-ipfs/commit/4e556221bd8fe56a9a0b8f69e0b7d9ed41082170
https://github.com/Agorise/c-ipfs/commit/ae6fe6dc29a2f971d1c208d63afac9a5ad2679ec
https://github.com/Agorise/c-libp2p/commit/a91e8407707b2fbeaf6bce40365708402f51d883

Ещё больше работ на этой неделе было проведено над совместимостью GO, и мы добились хорошего прогресса. Теперь наша версия C подключается с помощью нового многоуровневого подхода и больше напоминает версию GO. Стало проще добавлять дополнительные протоколы.

Вот несколько завершений в ветке “yamux” с-libp2p:

https://github.com/Agorise/c-libp2p/commit/746682ebef3e413e003c578522125fdc150094dc
https://github.com/Agorise/c-libp2p/commit/65194c06eee35034c140ad57794b7ca6acfb8c9a
https://github.com/Agorise/c-libp2p/commit/5e1cdac4cf2586d80ac9495cd50f4c53462b46bc
https://github.com/Agorise/c-libp2p/commit/9200e0f09c2206d8e0db7236f41a4e6e537c3910

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

Большинство наших приложений и веб-сайтов децентрализованы при помощи C-IPFS, а не только Stealth, так что создание подобного фундамента позволит полностью децентрализовать любые проекты (а не только наши). Больше никакой цензуры государств и провайдеров!
Подписаться и проверить наш код можно здесь:
https://github.com/Agorise?tab=repositories

Стелс-транзакции на платформе BitShares

Наша задача: “неизвестный” послал n “неизвестно чего” “неизвестному”

Из-за недостаточной стабильности тестнета bitshares.eu, на этой неделе мы вложились в свой собственный. Мы вот-вот запустим для него работающий кран, после чего, наконец, опубликуем URL, чтобы желающие смогли туда попасть и начать работать над кодом вместе с нами.

UI и UX для стелс (Stealth) и слепых (Blinded) транзакций уже работают в бета-режиме, НО недавний релиз нового интерфейса Bitshares (вы можете увидеть его в своём веб-кошельке и в скачиваемом лёгком кошельке) немного сместил настройки макета, поэтому нам потребуется несколько дополнительных дней для коррекции. Однако, всё выглядит отлично, так что мы не против дополнительной работы, ибо это долгожданные изменения :)

Некоторые из наших тестовых транзакций пока в процессе…

Создать стелс-аккаунт:

Отправить от публичного к слепому:

Подтвердить от публичного к слепому:

Публичный к слепому отображается в Истории:

Публичный к слепому отображается в блокчейне:

Вышеприведенные изображения демонстрируют перевод от Публичного к Слепому, который, конечно, не так увлекателен, как Публичный→Слепой→Слепой→Публичный. (Но скоро станет доступно и это. Всё работает, осталось лишь настроить расчёт комиссий). Мы опубликуем в нашей Телеграм-группе (https://t.me/Agorise) ещё больше скриншотов, а также, надеюсь, анимированное видео всего процесса.

Вот пруф этой транзакции в главной цепи:
https://cryptofresh.com/b/21487444

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

Также на днях были завершены дополнительные задачи, касающиеся Стелс и Слепых транзакций:

  • Завершена работа над безопасностью базы данных (БД) и, самое главное, синхронизацией.
  • БД Стелс, в том числе и ваш приватный ключ, монеты и т.д. также В БЕЗОПАСНОСТИ, в настоящее время для этого используется ваш стандартный пароль + SHA-3 + AES (будет легко перейти от одного типа шифрования/хеширования к другому в случае изменений).
  • Завершены ЛОКАЛЬНЫЕ резервные копии: теперь вы можете на выбор создать резервную копию всего кошелька или одного аккаунта.
  • Дополнительное примечание: вы можете переносить эти аккаунты из любого одного публичного кошелька в другой, так что если у вас было несколько Bitshares-UI кошельков, то теперь вы можете перемещать Стелс-аккаунты между ними. Вы можете сменить один аккаунт на другой или целиком перенести один кошелёк Стелс в другой.

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

  • Функция резервного копирования одного аккаунта реализована в контекстном меню Стелс-аккаунтов. Стелс предоставляет так много опций, что мы решили сгруппировать их в контекстном меню правой кнопки мыши, которое поможет держать пользовательский интерфейс чистым от редко используемых вами функций. Даже бабушка сможет этим пользоваться ;)

  • Визуальный бифункциональный экран для одновременного отображения одного Стелс-аккаунта или всего бэкапа Стелс-кошелька.

  • Исправлен баг, приводивший к дублированию аккаунтов, и, будь то случайность или совпадение, также другой, который время от времени делал то же самое в момент, когда вы нагружали пользовательский интерфейс быстрыми командами, на стороне IndexedDB.
    https://github.com/Agorise/bitshares-ui/commit/c50413f16d81590cd4d50115a85e56e863c7c881

Доказательство диапазона, RPC вызовы и обновление API

  • Это “склейка” (ссылка ниже) пользовательского интерфейса со слоями базы данных и нашим базовым кодом Стелс. В частности, она сосредоточена на “обработке монет” до и после их отправки. Поскольку Слепая/Стелс использует UTXO-модель, подобную Bitcoin, вместо стандартной модели аккаунта Bitshares, “Слепой баланс” — это коллекция “монет”, которые были получены (и связаны “завершениями”). Для осуществления слепой отправки нужно набрать достаточный для покрытия суммы (плюс комиссии) объём полученных монет, который становится “входами” в транзакции. После осуществления транзакции эти входы расходуются, и соответствующие им “монеты” на Слепом балансе отмечаются как потраченные, а остаток уменьшается. Если какой-либо “выход” из транзакции возвращается “на себя” (т.е. “переменная” монета имеет больше входных данных, чем сумма отправки с учётом комиссии), то такой выход должны быть обнаружен, обработан и добавлен обратно в слепой баланс. Это относится к процессам “обработки монет”.
  • Остаток недели был потрачен на доказательства диапазона: исследование / трассировку / анализ кода C++ в cli кошельке для фиксаций диапазона и планирование Javascript реализации.
  • Доказательства диапазона нужны транзакциям, использующим несколько выходов. Другими словами, если выход генерирует “сдачу”, то доказательству диапазона необходимо подтвердить факт того, что значения обоих выходов являются положительными (без раскрытия сумм выходов). Сеть использует эту меру для предотвращения мошенничества, т.к. она позволяет знать, что фальшивые монеты не производятся и не “маскируются” в балансе с отрицательным выходом.
  • Реализация доказательств диапазона на JavaScript пока находится в разработке и еще не включена в код. В настоящее время транзакции, ведущие к появлению монет “сдачи”, отклоняются сетью (они не могут пройти проверку диапазона). И всё же транзакции, суммы которых подобраны так, что “сдачи” не нужно, БУДУТ приниматься сетью. Необходимо убедиться в том, что сумма сделки плюс комиссия (0.001 TEST базовый сбор плюс 5.0 TEST на вход) в точности равняется суммарной стоимости “монет”, собранных для осуществления транзакции. Для облегчения процесса тестирования журнал сообщений фиксирует в консоли JavaScript процесс отбора монет и изменения их суммы.
    https://github.com/Agorise/bitshares-ui/commit/fd0f5095170d8d9011016aefbbd944cba662b9d5

Несколько человек из telegram-группы Agorise (https://t.me/Agorise) помогают нам написать BSIP для Стелс, чтобы наш код мог быть понят, проверен и, наконец, объединён с основной веткой Bitshares. Если вы хотите следить за прогрессом BSIP для Стелс, то, пожалуйста, посетите канал Agorise на Flock:
https://bitshares.flock.com

И, как всегда, не стесняйтесь предлагать свою помощь для проверки нашего кода:
https://github.com/Agorise?tab=repositories

POS-системы

Все работы для POS-систем на этой неделе проводились в библиотеке graphenej, см. ниже.

graphenej

Хотите сделать Android-приложение для платформы Bitshares? Попробуйте нашу библиотеку graphenej!
В разработке: https://github.com/Agorise/graphenej/tree/develop
Главная: https://github.com/Agorise/graphenej/

Первое улучшение было обусловлено тем, что класс PaymentHandler в нашей POS-системе должен был получить обновленную копию биржевого стакана. Для этого нам пришлось запросить полную ноду и получить текущую версию биржевого стакана, отражающую взаимодействия между базовым активом (BTS) и активом, выбранным пользователем (в данном случае – продавцом) в качестве выхода, который зачастую является смарткойном, например, bitUSD или bitEUR.

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

С целью унифицировать все соединения с любым из приложений, использующих нашу библиотеку graphenej, некоторое время назад в эксплуатацию был введен новый класс под названием NodeConnection. Идея заключается в том, что этот класс получает список URL-адресов полных нод и использует его для поддержания стабильного соединения с любой из нод. Помните придуманную нами схему “Node-Hopping”? Так вот, в случае ошибки этот класс повторяет попытку и устанавливает соединение со следующей нодой в списке. Ранее эта функция была реализована лишь частично, но теперь мы её полностью завершили и немного протестировали.

Затем были зафиксированы новые отчёты об ошибках в функциональности десериализации мемо библиотеки graphenej. Но для возможности решения данной проблемы напрямую нам сперва пришлось разобраться с рядом структурных вопросов, делавших использование тестовых сценариев весьма непрактичным занятием. Проблема заключалась в том, что для получения приватных ключей, используемых для шифрования/расшифровки мемо, тестовые сценарии зависели от некоторых внешних переменных. Изначально это было сделано во избежание публикации приватных ключей для выполнения тестов. Сейчас, когда тесты наконец заработали, нам удалось воспроизвести ошибку и исправить её. По сути, проблема была решена изначально, но снова всплыла при восстановлении типа данных “длинное целое” в качестве содержателя данных случайного кода мемо в наших последних изменениях к классу Memo. На этот раз проблема была решена путём замены длинного базисного элемента экземпляром BigInteger здесь:

https://github.com/Agorise/graphenej/commit/fc91f7366c39ea43193fcc5bcbd66f983e796990
https://github.com/Agorise/graphenej/commit/0192728bd5b3e7a3549fabf5b6abef07835b6252
https://github.com/Agorise/graphenej/commit/3d4b2719bb1d4726ad318f5d7fa4c70953f5417b

Мобильные кошельки

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

Основной код для “Carbon” почти готов. Для этого кошелька мы использовали исключительно новые компоненты архитектуры Android (AAC), и отзывчивость, средства и гибкость AAC оказались феноменальными. Теперь кодируется анимация (наконец-то!). Надеемся, что Бета 1 будет готова и доступна для скачивания до Рождества этого года. Обязательно посмотрите весь список возможностей на наших d.tube или YT каналах.

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

Вопросы? Присоединяйтесь к нам в Telegram и задавайте их!

https://t.me/Agorise
Мир, любовь и агоризм

- Команда разработчиков @Agorise


UPD

Апдейт от 04.11.17

ОК, мы разобрались с тарифной сеткой комиссий. Суммы и структура различаются по цепочке: на основной цепочке вы платите за ВЫХОД. В тестнете вы платите за ВХОД. Странно. Очень странно.
https://cryptofresh.com/b/21501698

Апдейт от 05.11.17

ПОЛНЫЙ КРУГ:

Публичный к слепому:
42.54933 BTS = win-the-agora to (@)nothingtoseehere
https://cryptofresh.com/b/21503991

От слепого к слепому:
32.54933 BTS = (@)nothingtoseehere к (@)justme
https://cryptofresh.com/b/21504115

От слепого к публичному:
20.00000 BTS = (@)justme к win-the-agora
https://cryptofresh.com/b/21504227
Полный круг израсходовал ~25 BTS на комиссии.

К СВЕДЕНИЮ:

Аккаунт "stealth-buyback" (https://cryptofresh.com/u/stealth-buyback) уже выкупает токены STEALTH в биржевом стакане. Покупки производятся каждый час за счет комиссий, аккумулированных за это время. Комиссии из Оп-кодов 39, 40 и 41 (to-blinded, blinded-to-blinded, и from-blinded) идут в аккумулятор комиссий. Несколько верхних из приведённых здесь транзакций произведены за счет комиссий, которые мы заплатили за наши тестовые транзакции прошлой ночью.

Публичный к слепому:

Публичный к слепому (Подтверждённая):

Слепой к слепому:

Слепой к слепому (Подтверждённая):

Слепой к публичному:

Слепой к публичному (Подтверждённая):

Апдейт от 06.11.17
Так что же осталось сделать для завершения функции стелс-транзакций на платформе BitShares?

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

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

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

Спасибо за внимание.


Переведено @blockchained

Оригинал поста: ЗДЕСЬ


Присоединяйтесь к чату в Telegram для обсуждения последних новостей Bitshares DEX

Если вам нравится то, что мы делаем - поддержите делегата blockchained на Голосе!

блокчейнbitsharesновостиagorise
207
238.577 GOLOS
0
В избранное
Graphene Ambassador
207
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (6)
Сортировать по:
Сначала старые