Я не смог найти ни у одной криптовалюты встроенного механизма арбитража, который был бы выгоден и удобен как продавцу, так и простому покупателю, далекому от IT. Поэтому я сделал свой вариант с блэкджеком и ..., который встроил в свою криптовалюту, которую разрабатываю уже 4-й год.
Вначале кратко о том, что у меня получилось в итоге
- Арбитры не могут забрать себе ни деньги покупателя, ни деньги продавца. Они могут лишь принимать решение о списании денежных средств со счета продавца в случае, если от покупателя поступила претензия. За свои услуги арбитры получают комиссионные – процент от каждой сделки, где они указаны в качестве арбитров.
- Для того чтобы сделка состоялась, и у покупателя и у продавца должен быть хотя бы один общий арбитр.
- Покупатель может прикрепить к одной сделке до 5-и арбитров. Все арбитры обладают равными правами, каждый из них может осуществить манибек.
- Перед переводом средств покупателю предоставляется информация о продавце: оборот, количество покупателей (анонимных, не анонимных) и пр.
Прежде всего, покупателю нужно выбрать арбитров, которым он готов доверить решение возможных споров с продавцами.
Любое действие арбитра фиксируется и хранится в блокчейне. Таким образом, информация о деятельности арбитра является общедоступной. Однако для защиты от накрутки статистка выдается только по идентифицированным пользователям.
При переводе монет пользователь выбирает арбитра из списка арбитров, которым доверят и он и продавец, затем жмет «отправить».
Если у покупателя возникают претензии к продавцу, он заходит в список покупок, жмет «Манибек», указывает свой email, который шифруется открытым ключом арбитра(ов) и продавца, и ждет, пока с ним свяжутся для выяснения обстоятельств.
А теперь детали
Вначале пара слов про Dcoin
В Dcoin нет центральных серверов, также как в Bitcoin у каждой ноды хранится полная копия базы данных. Обмен новыми данными между нодами происходит при помощи блоков. Каждый блок содержит хэш предыдущего блока. Все транзакции, исходящие от пользователя содержат уникальную подпись, которая доказывает, что транзакция создана именно этим пользователем.
В отличие от биткоина, в Dcoin не один, а 66 типов транзакций, благодаря которым 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 |
С более детальным описанием работы Dcoin можно ознакомиться в wiki.
Про майнинг в Dcoin
Майнинг в Dcoin – не есть майнинг в чистом виде, к которому все привыкли на примере прочих криптовалют. Производство новых монет не требует от пользователей каких бы то ни было усилий. Dcoin-монеты создаются с каждым новым блоком и распределяются между всеми участниками. Для анонимных пользователей рост объема монет на их счетах составляет около 0,0004%/блок. Величину процента определяют идентифицированные пользователи путем голосования
Один идентифицированный пользователь может создать ограниченное количество монет из ничего. Т.е. пользователи, которые доказали, что они не боты, отвечают за создание начальной денежной массы. При этом каждый такой пользователь является точкой обмена наличных на монеты в оффлайне. Для простоты, идентифицированных пользователей я называю майнерами.
Есть периоды сокращения объема монет, когда созданных монет оказалось больше, чем нужно рынку. Сокращение запускается на основе данных из блокчейна и его можно спрогнозировать, опираясь на количество майнеров, количество созданных монет и количество обещанных сумм. Пока число майнеров и объем обещанных сумм увеличивается, сокращения не происходят. Более подробно про периоды сокращения и периоды размножения можно почитать тут. А про идентификацию пользователей — тут.
Подробнее про арбитраж
Мульти-арбитраж
Dcoin дает возможность прикрепить к одной сделке до 5-и арбитров. В случае если покупатель запросит манибек, его запрос сможет удовлетворить любой из выбранных арбитров. После того, как сделка запечаталась в блокчейн, изменить список арбитров по данной сделке становится невозможным. Каждому арбитру, который прикрепляется к сделке, начисляются комиссионные.
Список доверенных арбитров
Для того чтобы сделка состоялась, и у покупателя и у продавца должен быть хотя бы один общий арбитр.
Структура транзакции
Поле | Описание |
---|---|
TYPE | Тип транзакции |
TIME | Время транзакции |
USER_ID | ID пользователя, который создал транзакцию |
TRUST_LIST | Список арбитров, которым доверяет пользователь |
SIGN | От 1 до 3-х подписей (TYPE,TIME,USER_ID,TRUST_LIST) от пользователя USER_ID |
Пример транзакции
( [type] => 62 [time] => 1408470908 [user_id] => 1 [arbitration_trust_list] => [2,107,269] [sign] => 82010085c558dd411e816f589d57e48a02bf9231c9dcc55994568e0e00a7db3980c7005d91e88815e5e5a3dc5908a7c4f97c1f973f7ba576c86621f59b608e9d84ce9595710050a42a72e12fa78eb6dd12f8ff90f7004d8b8426a7cf714d7707899e8aafd9dc4534b94292fe849cce765ca975af88f2524874e22439716a59d1473baf115da4d67193320a33f36a442aa1c9711c3145c7499c207fbcc2846f9712bb0dc96c6c59708fd8d25e36a631213679a060a728473be8f23b8f8591bce50b64c67cca00d970fce93a714d2678119b1e67324e9b462986d11239337532a179a6f455f68d3a2e59df24f34590bc032b7c8cc5d633add4bef4c8c18efe7100a5a873 )
Условия арбитра
Арбитр может задать различные условия по каждой валюте. Максимум — 0. Это значит без ограничений.
Структура транзакции
Поле | Описание |
---|---|
TYPE | Тип транзакции |
TIME | Время транзакции |
USER_ID | ID пользователя, который создал транзакцию |
CONDITIONS | Комиссия: мин, макс, %; мин, макс сумма по каждой валюте, с которой работает арбитр |
URL | Адрес сайта арбитра, где он может показать какую-то информацию о себе |
SIGN | От 1 до 3-х подписей (TYPE,TIME,USER_ID,CONDITIONS,URL) от пользователя USER_ID |
Пример транзакции
( [type] => 62 [time] => 1408470908 [user_id] => 1 [conditions] => {"23":["0.01","0","0.01","0","0.1"],"72":["0.01","0","0.01","0","0.1"]} [url] => http://arbitr.ru [sign] => 82010085c558dd411e816f589d57e48a02bf9231c9dcc55994568e0e00a7db3980c7005d91e88815e5e5a3dc5908a7c4f97c1f973f7ba576c86621f59b608e9d84ce9595710050a42a72e12fa78eb6dd12f8ff90f7004d8b8426a7cf714d7707899e8aafd9dc4534b94292fe849cce765ca975af88f2524874e22439716a59d1473baf115da4d67193320a33f36a442aa1c9711c3145c7499c207fbcc2846f9712bb0dc96c6c59708fd8d25e36a631213679a060a728473be8f23b8f8591bce50b64c67cca00d970fce93a714d2678119b1e67324e9b462986d11239337532a179a6f455f68d3a2e59df24f34590bc032b7c8cc5d633add4bef4c8c18efe7100a5a873 )
Holdback
Продавец может указать количество дней, в течение которых покупатель сможет запросить манибек, а также процент от суммы покупки, который замораживается на счету продавца на указанное ранее количество дней.
Для фирмы по изготовлению и доставке пиццы будет логично указать 3 дня и где-то 10% холдбека.
А вот для продавца, который первый раз продает что-то, например, через сервис аналогичный ebay.com, лучше указать 30 дней и 100% холдбек. Затем постепенно понижать % холдбека, когда будет появляться репутация. 100% холдбек означает, что вся сумма, которую оплатил покупатель, замораживается на счету продавца на 30 дней и может в любой момент быть возращена покупателю, если арбитр примет такое решение.
Структура транзакции
Поле | Описание |
---|---|
TYPE | Тип транзакции |
TIME | Время транзакции |
USER_ID | ID пользователя, который создал транзакцию |
ARBITRATION_DAYS_REFUND | Кол-во дней, в течение которых покупатель сможет запросить манибек |
HOLD_BACK_PCT | % холдбека |
SIGN | От 1 до 3-х подписей (TYPE,TIME,USER_ID,ARBITRATION_DAYS_REFUND,HOLD_BACK_PCT) от пользователя USER_ID |
Пример транзакции
( [type] => 62 [time] => 1408470908 [user_id] => 545 [arbitration_days_refund] => 30 [hold_back_pct] => 10 [sign] => 82010085c558dd411e816f589d57e48a02bf9231c9dcc55994568e0e00a7db3980c7005d91e88815e5e5a3dc5908a7c4f97c1f973f7ba576c86621f59b608e9d84ce9595710050a42a72e12fa78eb6dd12f8ff90f7004d8b8426a7cf714d7707899e8aafd9dc4534b94292fe849cce765ca975af88f2524874e22439716a59d1473baf115da4d67193320a33f36a442aa1c9711c3145c7499c207fbcc2846f9712bb0dc96c6c59708fd8d25e36a631213679a060a728473be8f23b8f8591bce50b64c67cca00d970fce93a714d2678119b1e67324e9b462986d11239337532a179a6f455f68d3a2e59df24f34590bc032b7c8cc5d633add4bef4c8c18efe7100a5a873 )
Запрос манибека
Покупатель может запросить манибек в течение того времени, которое было указано у продавца на момент совершения сделки.
Структура транзакции
Поле | Описание |
---|---|
TYPE | Тип транзакции |
TIME | Время транзакции |
USER_ID | ID пользователя, который создал транзакцию |
ORDER_ID | ID ордера, по которому пользователь хочет манибек |
ARBITRATOR0_ENC_TEXT | Контактные данные пользователя, зашифрованные открытым RSA ключом арбитра 1 |
ARBITRATOR1_ENC_TEXT | Контактные данные пользователя, зашифрованные открытым RSA ключом арбитра 2 |
ARBITRATOR2_ENC_TEXT | Контактные данные пользователя, зашифрованные открытым RSA ключом арбитра 3 |
ARBITRATOR3_ENC_TEXT | Контактные данные пользователя, зашифрованные открытым RSA ключом арбитра 4 |
ARBITRATOR4_ENC_TEXT | Контактные данные пользователя, зашифрованные открытым RSA ключом арбитра 5 |
SELLER_ENC_TEXT | Контактные данные пользователя, зашифрованные открытым RSA ключом продавца |
SIGN | От 1 до 3-х подписей (TYPE,TIME,USER_ID,ORDER_ID,ARBITRATOR0_ENC_TEXT,ARBITRATOR1_ENC_TEXT,ARBITRATOR2_ENC_TEXT,ARBITRATOR3_ENC_TEXT,ARBITRATOR4_ENC_TEXT) от пользователя USER_ID |
Пример транзакции
( [type] => 62 [time] => 1408470908 [user_id] => 6589 [order_id] => 2725 [arbitrator0_enc_text] => 4440b7abc674354aeb85a3e56e32e3a844a75571e12e516b35db27d6bab71813dd6b05deb36a27c074305476218810944c81f11f6f6fe53957daaa167cf533d06dfe5c5c98d26f004996bd1462cb775a9d8512c4494fb8326894a9e7038d1c073397a7ada2d22ed75118d0aaeba1b2721656320dd4d181fdddcf59a0fb66c3bf [arbitrator1_enc_text] => 73e87240c492d500436fcae4932050cb649c82da95f35b2bc00dadff840c52b4c1ab5ffa55fa1382549c6ae606f569e86e48fec2abefdf5efac92a736e3ec84e481718c003c510de314080c26842c6752051221c9bb27b45e146505e30f760f54284cc8e2b5c9d01999cc4314ccffbb77fcf4a02d35cec5c1efd61af3733b81b [arbitrator2_enc_text] => ec022338af265ffe077d42edc5f7bb62efabaa4a68760209e62ba323a9ac6bcf8a118564475538c18ed13ce4a56d3d67c2354c3a7f8e3f4a283bdcc78532968715715acab73a48943943e2e444e6f474230c1ee8391ee34cbcfa368a4be2f918724dc9c31e6ea10d5ba3e248708de8e9e00341887df22e6c1eccda8ea8db9942 [arbitrator3_enc_text] => 6a73044d9b3ae670a29598dbfe057490e68d21f67b691b8a3132debefbee46dc124a0c6a900702a00238e658df1250284c3477e23cfffef05fcd589f025bb1a589fe3689582010ab77318e2498483fe8855d314c2799215117c67402401fcf851563ab2e5421849b888ab3298795a8fc12fa32259a264382383c4f8b4d95fbb1 [arbitrator4_enc_text] => a4513ed3b369fd85dae21e5561aa13d52886b63171321d686dd8d083ae0db8e64cfd8a19419973e83fa275cc037962633d7694097bf56944d1e78ebd4ecbf321678a095ec27df9ff5555194b6df697ba37f9fd6f7dfa3781202473b908c471e507838d0a7cda04b2502cf276d229b2c0d4fed5329ec8421d4aec86b18f33c502 [seller_enc_text] => 54b0c7b193aee7fea8cf30a0bff179b41b65b083c3e9cb5562940ee3cd7490fc0d7c17b5bf577798bde829da7d8fa264afb9f6e96242057edd4a04446da2660ef36675f0161f452685fd6cb45e170f4de282dc4913c16a59428053df4a283e96fb77f7d9e6b1d0942bc9e1fac72127bfebba48d3cf0eca4846f32106d3523adf [sign] => 82010085c558dd411e816f589d57e48a02bf9231c9dcc55994568e0e00a7db3980c7005d91e88815e5e5a3dc5908a7c4f97c1f973f7ba576c86621f59b608e9d84ce9595710050a42a72e12fa78eb6dd12f8ff90f7004d8b8426a7cf714d7707899e8aafd9dc4534b94292fe849cce765ca975af88f2524874e22439716a59d1473baf115da4d67193320a33f36a442aa1c9711c3145c7499c207fbcc2846f9712bb0dc96c6c59708fd8d25e36a631213679a060a728473be8f23b8f8591bce50b64c67cca00d970fce93a714d2678119b1e67324e9b462986d11239337532a179a6f455f68d3a2e59df24f34590bc032b7c8cc5d633add4bef4c8c18efe7100a5a873 )
Удовлетворение запроса манибека
Запрос манибека видит и продавец и арбитр. Если продавец сумел договориться с покупателем до того, как арбитр принял решение, то он может сделать возврат самостоятельно. Если же продавец не сделал полный манибек, то его может сделать арбитр. Произвести манибек на сумму, большую, чем сумма сделки, невозможно.
Структура транзакции
Поле | Описание |
---|---|
TYPE | Тип транзакции |
TIME | Время транзакции |
USER_ID | ID пользователя, который создал транзакцию |
ORDER_ID | ID ордера, по которому делается манибек |
AMOUNT | Сумма манибека |
SIGN | От 1 до 3-х подписей (TYPE,TIME,USER_ID,ORDER_ID,AMOUNT) от пользователя USER_ID |
Пример транзакции
( [type] => 62 [time] => 1408470908 [user_id] => 7569 [order_id] => 2725 [amount] => 50.99 [sign] => 82010085c558dd411e816f589d57e48a02bf9231c9dcc55994568e0e00a7db3980c7005d91e88815e5e5a3dc5908a7c4f97c1f973f7ba576c86621f59b608e9d84ce9595710050a42a72e12fa78eb6dd12f8ff90f7004d8b8426a7cf714d7707899e8aafd9dc4534b94292fe849cce765ca975af88f2524874e22439716a59d1473baf115da4d67193320a33f36a442aa1c9711c3145c7499c207fbcc2846f9712bb0dc96c6c59708fd8d25e36a631213679a060a728473be8f23b8f8591bce50b64c67cca00d970fce93a714d2678119b1e67324e9b462986d11239337532a179a6f455f68d3a2e59df24f34590bc032b7c8cc5d633add4bef4c8c18efe7100a5a873 )
Изменение времени рассмотрения спора
Времени, в течение которого возможен манибек, может не хватить для принятия взвешенного решения арбитром. Поэтому у него есть возможность однократно увеличить этот срок до 180 дней.
Структура транзакции
Поле | Описание |
---|---|
TYPE | Тип транзакции |
TIME | Время транзакции |
USER_ID | ID пользователя, который создал транзакцию |
ORDER_ID | ID ордера, по которому делается увеличение времени |
ADD_TIME | Кол-во дней, на которое будет продлено время рассмотрения запроса |
SIGN | От 1 до 3-х подписей (TYPE,TIME,USER_ID,ORDER_ID,ADD_TIME) от пользователя USER_ID |
Пример транзакции
( [type] => 62 [time] => 1408470908 [user_id] => 1 [order_id] => 2725 [add_time] => 180 [sign] => 82010085c558dd411e816f589d57e48a02bf9231c9dcc55994568e0e00a7db3980c7005d91e88815e5e5a3dc5908a7c4f97c1f973f7ba576c86621f59b608e9d84ce9595710050a42a72e12fa78eb6dd12f8ff90f7004d8b8426a7cf714d7707899e8aafd9dc4534b94292fe849cce765ca975af88f2524874e22439716a59d1473baf115da4d67193320a33f36a442aa1c9711c3145c7499c207fbcc2846f9712bb0dc96c6c59708fd8d25e36a631213679a060a728473be8f23b8f8591bce50b64c67cca00d970fce93a714d2678119b1e67324e9b462986d11239337532a179a6f455f68d3a2e59df24f34590bc032b7c8cc5d633add4bef4c8c18efe7100a5a873 )
Недостатки
Самый главный недостаток арбитража заключается в том, что арбитры должны обладать высокой степенью доверия среди продавцов/покупателей и иметь репутацию справедливых судей, не экономящих времени на проведение полноценных расследований каждого спора, чтобы им можно было смело довериться и ни о чем не беспокоиться.
Итог
В итоге, ко всем прелестям независимости, которую дает децентрализация электронных денег, добавилось одно из главных преимуществ классических платежных инструментов – возможность оспорить сделку.
Тесты
На моем счете есть 20 dUSD, которые я готов раздать для тестов (по 1 dUSD), пишите в личку. Еще около 50 dUSD есть на бирже.
web-кошелек и exe, исходники
Список сервисов, уже принимающих Dcoin-ы:
racktech.ru
m4host.net
steadyhost.ru
komtet.ru (их главный инженер подсказал идею арбитража, за что ему огромное спасибо)
P.S.
С юзабили и интерфейсами у меня не очень, поэтому буду благодарен за советы, где что можно улучшить .
Автор: c-darwin