Published using Google Docs
Общие мысли по проекту bitcoin.pro
Updated automatically every 5 minutes

Список документов по проекту

  1. Предварительный todo список с приоритетами

Важные вопросы

Общая концепция

Интерфейсы взаимодействия

  1. Графический интерфейс
  2. RPC запросы по http с json-сериализацией (на основе проекта bitcoin а так же к функционалу плагинов)
  3. Доступ к функционалу из встроенного языка (см. плагины ниже)
  4. multichain - доступ к нестандартным blockchain (другие сети, например namecoin, litecoin)

Модульная система (плагины)

  1. Объектно-ориентированный доступ к интерфейсам
  2. Язык разработки кода плагинов - javascript
  3. Язык разработки GUI - html (из gui не должно быть прямого доступа к внешним http запросам, если это не разрешено)

Выбор javascript и html обусловлен очень высокой популярностью и очень низким порогом вхождения.

Репозитарий для плагинов

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

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

  1. Система подписи плагинов
  1. у плагинов могут быть авторы, его опубликовавшие в репозитарии
  2. плагины подписываются (хотя бы средствами кошелька bitcoin)
  3. запуск/установка только подписанного плагина (исключение - плагины в режиме отладки)
  4. авто-обновление плагинов (только если у них не изменилась структура разграничения прав, плюс по требованию разработчиков)
  1. Система зависимостей плагинов (не превратить в сложную и непонятную большинству систему, а то создавать еще одну систему портежей с use флагами как gentoo - перебор)
  2. Децентрализованный репозитарий
  1. своя распределенная mesh-сеть (кстати можно попытаться протащить изменения в стандарт bitcoin, чтобы использовать ее сеть для распространения информации - в сети нужна возможность рассылки коротких шифрованных сообщений между клиентами, не хранение)
  2. своя распределенная база данных, основанная на DHT или любой другой технологии (есть примеры freenet, i2p тоже что то пытаются разработать, сначала можно тупо хранить все у всех) - это просто key->value БД и публичные списки
  1. защита от флуда - статистикой и рейтингами, например плагин будет виден по умолчанию если
  1. сортировка по рейтингу (плюс черные и белые списки пользователей)
  2. статистика установок
  3. комментарии
  4. он новый (небольшой срок по таймауту)
  1. 100% защититься невозможно, любой децентрализованный проект может быть задушен флудом, но если будет серьезное развитие можно пробиться в blockchain bitcoin и как-нибудь воспользоваться его мощью для защиты (надо думать)
  1. подписи и шифрование с ключами-адресами bitcoin, нет необходимости городить что то новое
  1. Социальная состовляющая и организация репозитария
  1. Категории плагинов
  1. классические категории, раскрывающие функционал (я бы рекомендовал не категории а теги - это гибче)
  2. категории по доступу и требованиям (это больше вопрос интерфейса, посмотреть все плагины, изменяющие интерфейс, или те что добавляют функционал к blockchain,..)
  3. лицензии (free/платное/...) - нет смысла создавать ограничения пользователям по установке плагина не из репозитария
  1. Пользователи, комментарии, лайки, статистика
  1. Система разграничения прав доступа плагинов к данным и другим возможностям:
  1. кошелек (фактически все что сейчас позволяет стандартный клиент bitcoin, баланс, транзакции)
  2. доступ к blockchain (чтение - поиск в блоках и анализ транзакций, запись - формирование своих транзакций)
  1. работа с языком построения транзакций (разбор до лексем, формирование из лексем в языке прямо из javascript) - формирование может быть медленным из интерпретируемого языка, можно оформить в виде компиляции в нативный код (например компилировать в бинарный код при установке плагина), но важно продумать ограничения.
  2. поиск транзакций по шаблону (клиент bitcoin сейчас так и делает, выявляет 4 стандартных сценария транзакций), разработать язык, возможно хватит обычного regexp
  1. создание или расширение элементов GUI
  2. http/rpc запросы ‘наружу’, отдельно разрешается доступ по ‘белому списку’, либо доступ всюду кроме ‘черного списка’ (собирается минимальная статистика)
  3. доступ к функционалу плагина из вне с помощью штатного rpc клиента
  4. доступ к функциям других плагинов
  1. отдельно указывается доступные уровни прав доступа и квоты
  1. Система разграничения прав доступа по уровням, в каждом плагине есть набор методов, каждый метод помечается как:
  1. readonly: доступ к методам ‘только чтение’ - это только получение информации, методы не изменяют никакого состояния - например текущий баланс кошелька
  2. write: доступ к методам на ‘изменение состояния и данных’ - например создание транзакции это изменение
  3. root: привилегированный доступ (....)
  1. Система квот на ресурсы, в т.ч. к ресурсам, предоставляемых плагинами
  1. как минимум это доступ к нагрузке процессора
  2. размеры в хранилищах (плагин не может создать данных в другом плагине, например БД, больше чем указано в квотах, за этим следит этот второй плагин, нужен только инструментарий)
  3. количество и частота запросов во времени

Предложения по плагинам

  1. Торговые плагины
  1. унифицированный интерфейс (gui, классы, rpc)
  2. доступ к торговым площадкам (mtgox/btc-e/...) - совершать торговые операции, ввод и вывод (например работа с mtgox code)
  3. доступ к электронным кошелькам (liberty reserve, paxum, okpay, likpay,... webmoney,yandex, qiwi,...) - позволит совершать торговые операции напрямую между клиентами (может потребовать посредников или иные сервисы обеспечения транзакций и гарантий)
  1. Процессинговая система
  1. Понятие платежная система, сервисы оплаты, магазины,..
  2. Выписка счетов, массовые платежи, периодические и автоматические платежи
  1. Майнинг
  1. доступ к пулам майнинга (пример реализации - solidcoin)
  2. p2pool
  1. Работа с иными blockchain (namecoin, litecoin, ..)
  2. Поддержка escrow
  3. Альтернативные виды транзакций bitcoin
  4. Альтернативные GUI