Прежде всего, хочу выразить благодарность хабрахабру за бесплатно предоставленный корпоративный блог.
В статье описан инструмент, который я разрабатывал на протяжении 3-х лет и, наконец, выложил на github весной 2014 года. При помощи него можно как заработать деньги, так и потерять их. Будут рассмотрены все риски, а также разобрана схема работы инструмента.
Ставить исходники на свой сервер теперь не обязательно, можно пользоваться чужими нодами, просто введя их адрес в адресной строке браузера.
Введение
Инструмент представляет из себя набор исходных кодов, которые ставятся на компьютер пользователя и по заложенному в них алгоритму взаимодействуют с компьютерами других пользователей. Называется инструмент Dcoin. Чтобы статья не получилось слишком большой, вместо пояснений, я буду давать ссылки на wiki.
О себе
Dcoin разрабатываю в одиночку уже 3-й год. Мне 35 лет, живу в Санкт-Петербурге вместе с котом и женой.
О Dcoin
В Dcoin нет центральных серверов, также как в bitcoin у каждой ноды хранится полная копия базы данных. Обмен новыми данными между нодами происходит при помощи блоков. Каждый блок содержит хэш предыдущего блока. Каждая транзакция от пользователя содержит подпись, которая доказывает, что транзакция именно от этого пользователя.
В отличие от биткоина, в Dcoin не один, а 41 тип различных транзакций, благодаря которым Dcoin может существовать в том виде, в котором он представлен.
Пример структуры транзакции
Поле | Описание | Размер |
---|---|---|
TYPE | Тип транзакции | 1 байт |
TIME | Время транзакции | 4 байта |
USER_ID | ID пользователя, который создал транзакцию | 5 байт |
CURRENCY_ID | ID валюты | 1-3 байта |
AMOUNT | Размер обещанной суммы | 1-12 байт |
VIDEO_TYPE | youtube,vimeo,youku,null | 4-7 байт |
VIDEO_URL_ID | ID с видео-хостинга | 5-32 байта |
PAYMENT_SYSTEMS_IDS | ID платежных систем | 1-24 байта |
SIGN | От 1 до 3-х подписей (TYPE,TIME,USER_ID,CURRENCY_ID,AMOUNT, VIDEO_TYPE,VIDEO_URL_ID,PAYMENT_SYSTEMS_IDS) от пользователя USER_ID | от 128 до 4096 байт |
Заголовок (TYPE,TIME,USER_ID) и SIGN — есть у всех транзакций, а все остальные поля меняются в зависимости от назначения транзакции.
Структура блока
Поле | Описание | Размер |
---|---|---|
BLOCK_ID | Порядковый номер блока | 4 байта |
TIME | Время, когда был создан блок | 4 байта |
USER_ID | ID пользователя, который создал блок | 5 байт |
LEVEL | Уровень, на котором был майнер в момент создания блока | 2 байта |
SIGN | Подпись от (TYPE, BLOCK_ID, PREV_BLOCK_HASH, TIME, USER_ID, LEVEL, MRKL_ROOT) сделанная при помощи node-ключа | от 128 байта до 512 байт |
TRANSACTIONS | Список транзакций | До 3Mb |
$ctx = hexdec(substr($hash, 0, 6));
$hi = $ctx / 127773;
$lo = $ctx % 127773;
$x = 16807 * $lo - 2836 * $hi;
if ($x <= 0)
$x += 0x7fffffff;
$leve_0_miner_id = (($ctx = $x) % ($max_miner_id + 1));
$leve_0_miner_id = ($leve_0_miner_id==0)?1:$leve_0_miner_id;
Где $hash — sha256(sha256(user_id,block_id,prev_head_hash))), $max_miner_id — максимальный miner_id из таблицы miners
Если, например, сейчас на 0-м уровне miner_id 12689, то на 1-м уровне будут майнеры с ID 12690-12691 (2), на 2-м — 12692-126995 (4) и т.д.
Если майнер на 0-м уровне не смог сгенерировать блок, то в работу включаются ноды 1-го уровня, если и они не смогли, то 2-го и т.д. При этом между уровнями должны быть задержки, которые определены в переменной sleep. Т.е. если sleep->generator[0] = 120, то майнеры с 1-го уровня не смогут дописать в блокчейн свои блоки, пока не пройдет 120 секунд.
Между майнерами одного уровня происходит поиск блока с наименьшем хэшем, и найденный блок записывается в блокчейн.
Атака 51%
Уровни определяются на основе заголовка блока, в котором нет значения, которым можно манипулировать. Это значит, что невозможно сделать так, чтобы на 0-м уровне оказался какой-то конкретный miner_id. Атака 51% возможна в том случае, если злоумышленник захватит 51% приватных ключей майнеров. Если в DC-сети будет 100 000 майнеров, то злоумышленнику нужно будет получить контроль над более чем 50 000 приватными ключами.
С более детальным описанием работы Dcoin можно ознакомиться в wiki.
В Dcoin 77 вида валют. Но для удобства в статье будет упоминаться только DUSD.
Сравнение рисков в Dcoin с рисками игры на бирже криптовалют
Наиболее близкий к Dcoin по уровню рискованности инструмент — это биржа криптовалют, по-этому их сравнение считаю вполне уместным.
Возможность кражи денег клиентов владельцем сервиса
Вероятность потерять свои средства на бирже довольно высока.
В Dcoin биржа не нужна, т.к. все операции происходят между пользователями напрямую. Хотя и тут риск тоже есть, о нем будет сказано позже, в разделе «Недобросовестный майнер».
Само слово miner (в переводе шахтер), наверное, не очень подходит для обозначения пользователя с повышенными привилегиями. Но исторически сложилось, что используется miner.
Возможность появления багов
Релиз Bitcoin был в январе 2009. Очевидно, что движок bitcoin изучен более основательно, и вероятность, что там есть баг, довольно низка.
Релиз Dcoin был в апреле 2014, появление багов не исключено.
Возможность прогнозирования курса
Предсказать с высокой точностью, куда двинется курс на бирже, можно только обладая инсайдерской информацией, связанной с торгуемой там валютой.
У Dcoin идет постоянный рост количества монет. Курс всегда 1:1. Но есть риск, что сработает триггер и запустится процесс сокращения объема монет.
Сколько можно заработать?
Сотни процентов годовых.
Как можно потерять деньги при сокращении объема монет
На графике показан один из возможных вариантов развития событий
SELECT SUM(`tdc_amount`) + (SELECT SUM(`amount`) FROM `wallets` WHERE `currency_id` = 72)
FROM `promised_amount`
WHERE `currency_id` = 72
Обещанные USD:
SELECT sum(`amount`)
FROM `wallets`
WHERE `currency_id` = 72
По вертикальной оси отображен общесистемный объем, пусть это будут тыс $. По горизонтальной оси — месяцы.
На графике видно, что на значении 1200 объем обещанных сумм USD сравнялся с объемом DUSD. В этот момент (точнее, тогда, когда объем обещанных сумм стал меньше объема DUSD) срабатывает триггер и происходит сокращение DUSD на 10%. Если ситуация не меняется, через 2-е суток происходит еще одно сокращение на 10%, и так до тех пор, пока объем обещанных сумм не станет больше объема DUSD. На графике сокращение прекратилось, только когда объем DUSD уменьшился в 2 раза.
Те, кто отдал свои наличные за DUSD в 8-м месяце, в 9-м месяце получили потери -50%. Им остается либо ждать, пока DUSD снова вырастут, либо фиксировать убыток и выходить из игры.
Ну а те, кто купил DUSD, например, в 3-м месяце, а продали до наступления сокращения — получили сотни % прибыли.
Что может спровоцировать пересечение красной линии с синей?
— Слишком многие решили избавиться от DUSD
Если на бирже это приводит к падению курса валюты, то в Dcoin происходит сокращение количества монет.
— Слишком сильный рост количества DUSD.
Теоретически, это можно контролировать уменьшением % роста DUSD. Но практически это сделать не так просто, т.к. % роста устанавливается путем голосования майнеров.
О сокращении
Как возникает процесс сокращения, мы разобрались. Теперь рассмотрим, что происходит, когда этот процесс начался.
Новые запросы на обмен DUSD на наличные уменьшают объем обещанных сумм. При сокращении объема DUSD желающих отдать свои наличные за DUSD будет немного.
Представьте, что Вы видите такую статистику:
Объем DUSD | 950 тыс |
Объем обещанных сумм | 900 тыс |
Выполненных запросов на обмен | 6% |
Ваш баланс: | 100 DUSD |
Сокращение в ближайшие 48 часов, скорее всего, будет. Удовлетворять входящие запросы Вы, скорее всего, не станете.
Далее, нужно принять решение, слать ли самому запрос другому майнеру, чтобы обменять свои DUSD на $. При этом, если смотреть на общесистемную статистику, вероятность, что он его выполнит, всего 6%. И самое важное: если Вы отправите такой запрос, Вы усугубите ситуацию по всей системе, и сокращение будет продолжаться, т.к. невыполненные запросы на обмен обещанных суммы уменьшают общий объем обещанных сумм в системе. Когда большинство перестанет слать запросы на обмен своих DUSD на $, сокращение остановится. Те, кто отказались менять свои $ на DUSD, раз в 2 недели могут актуализировать свои обещанные суммы, и они снова станут учитываться в общесистемной статистике.
Как еще можно потерять деньги в Dcoin
Допустим, Вы прошли регистрацию, стали майнером, добавили обещанную сумму 100$, Вам уже набежало какое-то количество монет, возможно, Вы их уже обменяли на наличные у какого-то майнера. Пока риски были равны нулю.
Фейковый запрос
И вдруг Вам приходит запрос, согласно которому, Вы должны отдать 100$ за 100 DUSD.
Если Вы не ставили исходники к себе, а воспользовались пулом, то есть риск, что это фейковый запрос, который сделал админ пула. Чтобы убедиться, что запрос реальный, нужно поставить исходники к себе на компьютер и получить этот же запрос уже на основе данных из Вашей локальной базы данных.
Боты
Есть риск, что каким-то образом в Dcoin проникли миллионы ботов-майнеров, которые намайнили монет и теперь выводят их. Нужно исключить этот вариант.
Можно просто почитать независимые источники, нет ли сообщений о том, что у Dcoin что-то не в порядке. Или можно провести свое расследование. Тут можно скачать свежий архив фото и видео всех майнеров. Разумеется, более надежным будет собрать самостоятельно такой архив, распарсив таблицу miners_data и скачав фото и видео всех майнеров. Имеющийся архив можно либо выборочно проверить, либо прогнать через какой-нибудь софт, который ищет одинаковые лица. Почему невозможно подделать видео, можно почитать тут.
Недобросовестный майнер
Остается риск, что отдав 100$, Вы не получите 100 DUSD. Т.е. Вы получили запрос, связались с отправителем запроса, он указал номер счета, например, в яндекс-деньгах, Вы отправили ему 100$, а он, получив деньги, перестал отвечать.
Самый надежный способ — это обмен наличных на dcoin при личной встрече. Для этого в Dcoin используются одноразовые коды. Вы отдаете деньги, а получаете взамен код, хэш которого Вам уже известен. Таким образом, даже если в месте встрече нет интернета, можно легко вычислить sha256(sha256(«код»)), и если он сходится с Вашим хэшем, значит всё в порядке, и когда появится интернет, нужно будет просто указать код у себя в кабинете.
Но если сумма небольшая и у майнера нет отрицательных отзывов, то можно рискнуть и провести сделку без личной встречи.
Подробнее про сотни процентов годовых
Есть 2 типа аккаунтов: Майнерские и пользовательские.
Большую часть времени количество монет у всех растет.
Майнеры путем голосования устанавливают % и для майнеров, и для пользователей. Для майнеров это может быть от 0 до 1000%/год, для пользователей — от 0 до 500%/год.
Майнеры могут создавать монеты из ничего. Т.е. майнер может создать, например, 100 DUSD, не потратив при этом ни цента. Для этого майнер должен пообещать отдать какую-то сумму $ за DUSD. Максимальная сумма — 1000$. Майнерский % относится именно к этой сумме. Т.е. при 1000% годовых от 100$ через месяц будет создано 22 DUSD. Когда майнер хочет обменять набежавшие DUSD на $, он шлет запрос ближайшему майнеру, у которого есть нужная обещанная сумма. При обмене курс всегда 1:1.
Пользовательских аккаунтов можно иметь неограниченное количество, они полностью анонимны, у них нет лимитов, но и нет возможности добавлять обещанную сумму, т.е. создавать монеты из ничего. Пользователь может купить DUSD на бирже (точнее, пока что не может, т.к. dcoin еще нет на биржах). DUSD, которые лежат у пользователей, растут от 0 до 500% в год.
Сокращаются монеты одинаково как у майнеров, так и у пользователей.
Прогнозы
Благодаря тому, что все данные хранятся в блокчейне, любой желающий может создать свой сервис с графиками, статистикой и на их основе делать свои прогнозы, когда произойдет сокращение объема монет.
Dcoin в электронной коммерции
Если Dcoin станет популярен и его монеты можно будет купить и продать на биржах, то для продавцов товаров и услуг прием Dcoin мало чем будет отличаться от приема bitcoin: получил оплату, продал на бирже, получил наличные.
Монетизация
Временно не активна. В будущем будет браться комиссия с тех монет, которые переводятся с обещанной суммы на кошелек. Премайна нет.
Заключение
Не стоит рассматривать Dcoin как инструмент для серьезных инвестиций. Должно пройти больше времени и должно набраться больше статистики. Но для экспериментов с очень мелкими суммами Dcoin уже созрел.
Автор: c-darwin