Привет!
Я тут читал, думал, думал и, вот, придумал:
Идея:
Создать каталог торрент-файлов на базе DataCoin.
Зачем:
Чтобы каталог торрентов был всегда доступен. Даже в случае недоступности основных торрент-ресурсов. Вдруг у них там ошибка 502.
Для пользователя, который решил скачать какой-то торрент, это будет выглядеть так:
1. запустил datacoin-qt и datacoin-http сервер. Оба они свернулись в трей и больше не чирикают. Или зашёл на какой-нибудь DataCoin http сервер в сети.
2. открыл список торрентов в браузере по адресу
http://localhost/dtc/get/адрес-приложения-поисковика-торрентов-которое-мы-тут-с-вами-напишем.
3. выбрал описание, нажал на ссылку, браузер скачал .torrent файл, Torrent-клиент его открыл, пошёл искать источники своими силами и начал качать. Это уже без нашей помощи.
Таким образом, для пользователя (в худшем случае) добавляется один дополнительный шаг - это запуск DataCoin софта (я очень надеюсь, что разработчики DataCoin работают над тем, чтобы это было не так мучительно, как сейчас). После этого он пользуется своим обычным браузером и своим обычным Torrent-клиентом. В самом лучшем случае datacoin-http сервера будут установлены на многих сайтах и можно будет зайти туда ничего не устанавливая. Мечтаем дальше.
Как это сделать:
Мало заслать в блокчейн .torrent файл, т.к. сами по себе .torrent файлы не содержат даже названия того ресурса, который с их помощью скачивается. Дополнительно к ним нужно добавить метаинформацию о фильме/книге/софте. Поскольку два файла в Datacoin-транзакцию помещать неудобно (нет api для одновременной отправки нескольких файлов), то .torrent и метаиформацию можно разместить в двух последовательных транзакциях.
В качестве формата для метаинформации (чтобы не изобретать велосипед) можно использовать словарь schema.org (который для вебмастеров от Гугла и Яндекса) в формате json-ld. В schema.org есть более чем избыточный набор "тегов" для описания фильмов и т.д. В этом формате метаинформация может выглядеть, например, вот так:
{
"@context": { "@vocab": "
http://schema.org/" },
"@type": "Movie",
"name": [{ "@value": "Star Wars 115 (Creative Commons Edition)", "@language": "en" }],
"sameAs": "
http://en.wikipedia.org/wiki/Star_Wars_115",
"datePublished": "2015-04-01",
"genre": "drama / comedy / horror",
"description": "Тайная группа фанатов звёздных войн выложила, наконец, очередной эпизод сериала.",
"director": [{ "@type": "Person", "givenName": "Иван", "familyName": "Паравозов" }],
"publishingPrinciples": "
http://creativecommons.org/licenses/by-sa/4.18/",
"video": [{
"@type": "VideoObject",
"name": [{ "@value": "Star Wars 115", "@language": "en" }],
"contentSize": "4.33 GiB",
"uploadDate": "2015-04-02",
"contentUrl": "c31f7f8bdcecbb218935da3eac937c77e48a6e4d37c1d2624c2f54acea9de62b"
}]
}
Таким образом, публикация торрента в DataCoin будет выглядеть следующим образом:
1. Положить в DataCoin myfilm.torrent и записать id траназкции
2. Составить myfilm.jsonld, вписать туда
- описание фильма
- id транзакции с .torrent файлом
3. Положить в DataCoin myfilm.jsonld
Приложение, ищущее торренты в блокчейне, ищет среди всех файлов те, у которых проставлен Content-Type:application/json+ld и отображать их список или как-то ещё искать по ним. Если не будет хватать данных в json+ld описании (например, ищем по актёру, а имена актёров не перечислены), то это же приложение может сходить в DBpedia, imdb или в Википедию по указанным ссылкам и догрузить недостающее. Это, собственно, к тому, что поле "sameAs" тут не для красоты, а описание можно делать довольно коротким, т.к. вся необходимая инфа для поиска в сети уже есть и вряд ли куда-то денется. Чего нельзя сказать о торрент сайтах, которые могут стать недоступны вне зависимости от легальности раздаваемого там. Я к тому, что и вполне законопослушный ресурс может пасть смертью храбрых, например, под DDoSом. А для пользователя важна надёжность.
Само по себе приложение я предлагаю сделать по аналогии с block explorer (
http://ec2-54-201-144-165.us-west-2.compute.amazonaws.com/dtc/get/40a3eb9624528008a87d9119dbed4041d45c9f6483ecd52a7b24f9c8b4fdf548 ), который предложил oocook5u (разработчик Datacoin). Это чисто HTML/JavaScript страница, которая читает цепочку блоков через HTTP шлюз к стандартному JSON-RPC API. Ну, короче, эту часть в его постах я, вроде понял, и, при необходимости, я могу объяснить подробно любому веб-программисту.
Для того, чтобы мотивировать пользователей заливать туда торренты, надо будет сделать возможность послать монетку на тот адрес, с которого торрент-файл был залит или на какой-нибудь специальный адрес, связанный с конкретным торрентом (указывать в .jsonld?). Для этого, правда, нужно, чтобы разблокировали комиссию. Для такой формы оплаты она, наверное, высоковата. Суммы на этих адресах можно будет далее учитывать при ранжировании списка (или не стоит?).
Аналогичным образом, можно включать адрес для donation правообладателю в .jsonld и подписывать этот адрес всем известным закрытым ключом этого правообладателя. Т.е. вопрос легальности раздачи касается только двоих: отправляющего и скачивающего. Наша задача - предоставить им возможность обменяться информацией так, чтобы они друг друга однозначно поняли. Подпись адреса для donation правообладателем - это способ сообщить скачивающему о легальности раздачи. Или, по крайней мере, о точке зрения правообладателя на вопрос легальности (может же и врать).
Короче, если вам показалось, что я тут пишу про пиратство, то это не так. Я тут скорее про возможность пообщаться без посредников. Я верю, что, однажды, случится день, когда мы все станем достаточно взрослыми, чтобы такая форма взаимодействия была для нас оптимальной. Теперь возвращаемся к техническим вопросам.
Что именно нужно сделать:
- приложение-поисковик торрентов (то, чем будут пользоваться 99% причастных, которые ничего не публикуют, а только скачивают)
Я сейчас переделывают тот block explorer. Из этого получится как минимум прототип с основными функциями. Но интерфейс у него уродский. Поэтому я ищу дизайнера, который нарисовал бы классный интерфейс и программиста, который бы его закодил.
- приложение-загрузчик торрента и его описания в DataCoin
Это можно сделать на основе кода из репозитория DataCoin (который на Perl). Или в виде отдельного Qt приложения, которое общается с DataCoin-демоном по JSON-RPC. Для Qt приложения нужен Qt программист.
Программа-максимум:
- краудфандинговый сайт-загрузчик торрентов
Поскольку отправка файлов в блокчейн приводит к трате монет, а загружающий, в общем случае, не обязан тратить монеты, то возможен ещё и такой сценарий:
- Пользователь загружает на сайт .torrent и .jsonld
- На сайте создаётся отдельный DataCoin адрес для пожертвований за то, чтобы включить этот торрент-файл в блокчейн. Известна необходимая сумма комиссии за включение файла в цепочку. Когда пожертвований набирается достаточное количество, то сайт автоматически отсылает оба файла в блокчейн.
Это чуть сложнее, чем всё предыдущее. Кто умеет и хочет взяться за это?
Ну, и вообще, что думаете?
Может быть кто-то уже делает что-то подобное?
Подробности про идеи DataCoin от его создателя (англ.):
[1] Основная ветка
https://bitcointalk.org/index.php?topic=325735.0[2] Про block explorer и приложения в blockchain
https://bitcointalk.org/index.php?topic=405992.0