Децентрализованный краудфандинг для любых проектов
Что мне не нравится в краудфандинговых площадках: — огромная комиссия — до 10%— жесткая модерация — не любой проект можно опубликовать— отсутствие мультиязычного описания проектов и большие трудности с переводом денег, если бэкер, например, из Китая— невозможность вернуть хотя бы часть денег, если автор проекта не выполняет свои обязательства в указанный срок.Все вышеперечисленные проблемы я, частично или полностью, решил в своей криптовалюте, в которую встроил механизм децентрализованного краудфандинга.
В 2-х словах о том, что у меня получилосьМеханизм краудфандинга внедрен в сам протокол Dcoin. Данные о проектах, бэкерах, комменты копируются на все ноды. Никакие центральные сервера не нужны (за исключением фотохостингов, типа imgur.com, для размещения описаний проектов).
Комиссия 0,1% (достается нодам, подписывающим блок).
Разместить можно абсолютно любой проект, никто не может заблокировать ни проект, ни кошелек.
Можно собирать средства, оставаясь анонимным.
Можно добавить описание на 10-и языках.
Если Вам нужны рубли, то Вы можете собирать именно рубли. Если кто-то из Китая решил вложить в Ваш проект 300 юаней, ему нужно будет зайти на валютную биржу (кстати, тоже децентрализованную и встроенную в Dcoin) и обменять юани на рубли.
Если проект набирает обозначенную сумму, тогда автоматически выпускается новая криптовалюта. Монеты этой валюты автоматически распределяются между всеми бэкерами пропорционально суммам, которые они вложили в проект. Монеты проекта можно свободно продавать и покупать на биржах. Автор проекта должен будет продать свой продукт за данную валюту. Таким образом, валюта выходит из обращения в тот момент, когда автор проекта выполнил свои обязательства. Если бэкер передумал ждать, когда будет готов продукт, то он может продать монеты на бирже тем, кто готов ждать до победного конца.
Про Dcoin
Dcoin — децентрализованная криптовалюта, которая функционирует с апреля 2014. Имеет 2 типа аккаунтов — анонимные и майнерские. Если покупать монеты на бирже, то можно использовать простой анонимный аккаунт. Анонимные аккаунты и средства, находящиеся на их кошельках невозможно ни заблокировать, ни удалить.Еще немного подробностей про Dcoin
Dcoin разрабатываю в одиночку больше 3-х лет. В Dcoin нет центральных серверов, также как в Bitcoin у каждой ноды хранится полная копия базы данных. Обмен новыми данными между нодами происходит при помощи блоков. Каждый блок содержит хэш предыдущего блока. Каждая транзакция от пользователя содержит подпись, которая доказывает, что транзакция именно от этого пользователя.
В отличие от биткоина, в Dcoin не один, а 48 типов различных транзакций, благодаря которым 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.
Добавление нового проекта
Запуск нового проекта очень прост. Нужно всего лишь заполнить несколько полей.
Через несколько минут после отправки в DC-сеть, когда транзакция попадет в блок, Ваш проект станет доступен для финансирования, и на него уже можно будет отправлять монеты.
Как это выглядит изнутри
Структура транзакции
Поле
Описание
TYPE
Тип транзакции
TIME
Время транзакции
USER_ID
ID пользователя, который создал транзакцию
CURRENCY_ID
ID валюты
AMOUNT
Желаемая сумма
END_TIME
Время окончания сбора средств
LATITUDE
Широта
LONGITUDE
Долгота
CATEGORY_ID
ID категории
PROJECT_CURRENCY_NAME
Название для новой криптовалюты
SIGN
От 1 до 3-х подписей (TYPE, TIME, USER_ID, CURRENCY_ID, AMOUNT, END_TIME, LATITUDE, LONGITUDE, CATEGORY_ID, PROJECT_CURRENCY_NAME) от пользователя USER_ID
Пример транзакции
(
[type] => 35
[time] => 1408470376
[user_id] => 1
[currency_id] => 72
[amount] => 1000
[end_time] => 1409075213
[latitude] => 39.94887
[longitude] => -75.15005
[category_id] => 4
[project_currency_name] => TEST003
[sign] => 820100701a18c4e8f3f92a109ff347784bcd1b78325e8ccbb4b69693b509a211212a7d3306268347c2228de0d395f11368358c52141c8fe6056d63b520942d8f1434722b5bdbf97c412099f20b3f82fc48dc484db93baf78084583134b0f0b9b667cabc5b842befa6ad4519677241f37de8ecdac6ac9026bfe2454810f267fe8f6547516e358cdf9eb3f705085833aa37f4c8a6cb046949f415085e56a537698b0c6d762840b82188ebfe86736d5b7ac47823bc4a25d72065208f082968377c902a757bfe6fd10225d1f7c96fcb860543d8e5c2cae92baa67fb705560e437141f6610798f58e6564b24ef8dbbc0a00011f7e21cc399f941babaab3637f6555f2077170
)
После обработки такой транзакции создается запись в таблице cf_projects
Добавление описания для проекта
Всего можно прикрепить до 10-и описаний на разных языках. Описания можно добавлять только в виде URL картинок. Это необходимо для того, чтобы переложить ответственность за содержимое контента с немодерируемых нодов на хостинг, где будет размещена картинка, а также — для экономии места в БД нодов.
Как это выглядит изнутри
Структура транзакции
Поле
Описание
TYPE
Тип транзакции
TIME
Время транзакции
USER_ID
ID пользователя, который создал транзакцию
PROJECT_ID
ID проекта
LANG_ID
ID языка
BLURB_IMG
Изображение для каталога
HEAD_IMG
Изображение для шапки
DESCRIPTION_IMG
Картинка-описание проекта
PICTURE
Главная картинка
VIDEO_TYPE
Если есть видео, то video_type
VIDEO_URL_ID
Если есть видео, то video_url_id
NEWS_IMG
Картинка новостей проекта
LINKS
Ссылки для картинки-описания в формате [[«url1», x1, y1, x2, y2],[«url2», x1, y1, x2, y2],…]. до 512 знаков.
HIDE
Можно спрятать, если случайно было добавлено описание на ненужном языке
SIGN
От 1 до 3-х подписей (TYPE, TIME, USER_ID, PROJECT_ID, LANG_ID, BLURB_IMG, HEAD_IMG, DESCRIPTION_IMG, PICTURE, VIDEO_TYPE, VIDEO_URL_ID, NEWS_IMG, LINKS, HIDE) от пользователя USER_ID
Пример транзакции
(
[type] => 40
[time] => 1408470908
[user_id] => 1
[project_id] => 4
[lang_id] => 42
[blurb_img] => http://i.imgur.com/BBnBbC5.png
[head_img] => http://i.imgur.com/BBnBbC5.png
[description_img] => 0
[picture] => http://i.imgur.com/BBnBbC5.png
[video_type] => youtube
[video_url_id] => 0
[news_img] => 0
[links] => 0
[hide] => 0
[sign] => 82010085c558dd411e816f589d57e48a02bf9231c9dcc55994568e0e00a7db3980c7005d91e88815e5e5a3dc5908a7c4f97c1f973f7ba576c86621f59b608e9d84ce9595710050a42a72e12fa78eb6dd12f8ff90f7004d8b8426a7cf714d7707899e8aafd9dc4534b94292fe849cce765ca975af88f2524874e22439716a59d1473baf115da4d67193320a33f36a442aa1c9711c3145c7499c207fbcc2846f9712bb0dc96c6c59708fd8d25e36a631213679a060a728473be8f23b8f8591bce50b64c67cca00d970fce93a714d2678119b1e67324e9b462986d11239337532a179a6f455f68d3a2e59df24f34590bc032b7c8cc5d633add4bef4c8c18efe7100a5a873
)
После обработки такой транзакции создается запись в таблице cf_projects_data, либо, если запись с таким же языком для такого же проекта уже есть, то обновляется существующая.
Отправка монет в краудфандинг-проект
Для того чтобы профинансировать какой-то проект, нужно просто кликнуть «Профинансировать», после чего откроется вот такая форма: 
Как это выглядит изнутри Структура транзакции Поле Описание TYPE Тип транзакции TIME Время транзакции USER_ID ID пользователя, который создал транзакцию PROJECT_ID ID проекта AMOUNT Сумма COMMISSION Комиссия, которая достанется майнеру, подписавшему блок COMMENT Примечание, зашифрованное открытым ключом автора проекта SIGN От 1 до 3-х подписей (TYPE, TIME, USER_ID, PROJECT_ID, AMOUNT, COMMISSION, COMMENT) от пользователя USER_ID Пример транзакции ( [type] => 48 [time] => 1408471786 [user_id] => 1 [project_id] => 4 [amount] => 100 [commission] => 0.1 [comment] => 4793010de6e65288fba7ba71e93883cafc0c724fb6306cc77b0525721b5e76883234997bcb4bda16e2568e5c1c30fb53fdb61999aa0c066189352d8ebc9d4dfb58d298d997cfdcf60c10d89815a4f620a68bbc690f95503e50e1913b3f82322df37895587413fde1b09c8acc4d746a145027b4753f180b073c31c8ab199f475d5c9c86841aaee506cb97bebe799e7497bf5765f848d9bfda3c58a44be9da4e86bb319d6580c5a35a8e49ec3a519bbfb53b33d590f691247929c2d489bcd8fa0d70c78c0b302edd39a474f116cfbf0d972ce0dee3999525d021161a6c5492c9a895eb01e764ee4fc1287ac41d3aea1b251108f362eb4984f01acf34ab0d202991 [sign] => 820100766b5e41a7fcc473912dfc74afdd7f47dbacbf0a8ebd6b3f552a3d58972cbd979c61e1942b59b1cfaa74b89a8bbc30849b7e9942e1fd16be2a48ccc0b2ffb1152bc737967ec3330b4225b4f195d7d7f8356c15ab72ccbaed9587445bacd45f367d7d20a34ed546b0d48dafe1cb4cf3a3d3187a50a52eafd09d874da67f7e2ccfd861a17b5ee91bbcf5cd92565faf5b2d25d249d0f6fe307d63cb883343eb9c9be4ff4c0ed2ca83ea3e5e8c54bf9d780d819e3f5ca2495c5aab4dff6c34bfa8d5bde60beeb84c6474305c968920a5526a6c563c96abdd4a67efb793637d009f0878bbec56e277b87ad4675098a4eb650c6910ab973d7f72980554f068499a33ad
)
После обработки такой транзакции создается запись в таблице cf_funding, где записывается amount из транзакции, а у отправителя эта сумма списывается со счета.Если end_time проекта 1. Нужная сумма набрана. В таблице cf_currency создается запись с названием валюты проекта. Автору проекта начисляется собранная сумма. Бэкерам начисляется валюта проекта пропорционально суммам, которыми они профинансировали проект.2. Нужная сумма не набрана. Всем бэкерам возвращаются монеты, которые они отправлял в данный проект.
Отмена финансирования
Если Вы передумали, то до завершения проекта можете вернуть свои монеты. Нужно просто нажать cancel в списке операций по Вашему счету.Как это выглядит изнутри
Структура транзакции
Поле
Описание
TYPE
Тип транзакции
TIME
Время транзакции
USER_ID
ID пользователя, который создал транзакцию
FUNDING_ID
ID из таблицы cf_funding
SIGN
От 1 до 3-х подписей (TYPE, TIME, USER_ID, FUNDING_ID) от пользователя USER_ID
Пример транзакции
(
[type] => 44
[time] => 1408472956
[user_id] => 1
[funding_id] => 40
[sign] => 8201001245f8abcaf636c43ddecd54348c1f3462ce3ef3179c5da246e221f09567dc909ba1c477e62ed1a3bb4909230045eda3476c3a69ac602730f6f47955ca67b030011872b0f780c1f4a8e140f2e90e2f76de8781c372922c172c07e8065227f04fb7bf16b810c884f4c190915f9c9d40ee03bed24cfa239ef1400b536511150201a87c125467cc08253647d53381f75baf791f42d68cd707f61c13c4efeb780f1ae7ed3bb6915a4a4e666ace825bf64bdd0bc7246869cb1d1c76f16d377b9d543c085b1b4062e5602fe2bc919c6f54805a8ad1cd9fbb97e03e68c57f56eac96810a60f6d5529dcb143c39920bcd46391d489adf3bbddcea4d3fdbe9e53267ae828
)
После обработки такой транзакции в таблице cf_funding для указанного ID указывается del_block_id. И отправителю возвращаются его монеты.
Удаление проекта
До завершения сбора средств Вы можете удалить свой проект. В этом случае все средства будут возращены бэкерам.Как это выглядит изнутри
Структура транзакции
Поле
Описание
TYPE
Тип транзакции
TIME
Время транзакции
USER_ID
ID пользователя, который создал транзакцию
PROJECT_ID
ID проекта
SIGN
От 1 до 3-х подписей (TYPE, TIME, USER_ID, PROJECT_ID) от пользователя USER_ID
Пример транзакции
(
[type] => 46
[time] => 1408473247
[user_id] => 1
[project_id] => 3
[sign] => 82010034492a93753feb86a4ef56ec465f67eca9ad6969867e9f59ccbf93e5e729ea645de0848f5501366f4bc0db4be41ceef8fe0650962323b7ba41f328af4d2f3228a7a0ce0865b05d1e7e27c075f779db6af864b914281d97d5c4445ec94fe15667197496d7363a2036ed5d829ceeb73056e31888abc8988164a9ec30bd9f133776288bce53200654d09cd5630e57fb38ff8dfc7f820e37bf7985f20c29030f84abb6f03ebfc170fdee7ebec99c777a7bdd4ac01e2ea1a50cb88f7ae9f127cabe33fd3f4a25effd321f0fc5e3c196db64d51d4adfc52e0d878a5fb1f5863facabd34d33a41cfa62d196e67f5c209b48310e78524e3a3a2be1564a5eb7d5af3f33e4
)
После обработки такой транзакции в таблице cf_projects для данного проекта указывается del_block_id. И всем бэкерам возвращаются их монеты.
Изменение категории для проекта
Категорию проекта можно в любой момент изменить.Как это выглядит изнутри
Структура транзакции
Поле
Описание
TYPE
Тип транзакции
TIME
Время транзакции
USER_ID
ID пользователя, который создал транзакцию
PROJECT_ID
ID проекта
CATEGORY_ID
ID категории
SIGN
От 1 до 3-х подписей (TYPE, TIME, USER_ID, PROJECT_ID, CATEGORY_ID) от пользователя USER_ID
Пример транзакции
(
[type] => 50
[time] => 1408475554
[user_id] => 1
[project_id] => 4
[category_id] => 13
[sign] => 8201004155bf4df043e9c7d450d66ff24a6c139f0943fc1572b5ecb95cbaa0d390f374f1a3f968e779b7dc067aff5a7dfcd353d53aa533c0c4f85c429954176bcb2136e63fa985008b889c5aa69c2eb2c65d0bf08bcf61cc66da18d70df5e07d9fcb484207ea98fb60b2fca6e5657b7d0d3c55f13e6e3a12840eb7162807fc54be5af15b32403a40d33b11e8130cf152a204c5bc235cd5e1b7665083a26425807512b09a6adf894d2e2b9c74a88112bf4962e1592cdbdd2fbdf7095f1c70b599f2b8b3afcc9a47935f49696316bb76ede1b999a7b62fc6de138e1be9948f222df8ab57457325a3197a03ca1c954a75cc8ba830bc9adbf34a25c77ddfe97ba8ec76fba1
)
После обработки такой транзакции в таблице cf_projects для данного проекта меняется category_id.
Комментарии
Комментарии могут писать только те, кто профинансировал проект, либо автор проекта. Удалять комментарии нельзя.
Как это выглядит изнутри Структура транзакции Поле Описание TYPE Тип транзакции TIME Время транзакции USER_ID ID пользователя, который создал транзакцию PROJECT_ID ID проекта LANG_ID ID языка COMMENT Комментарий SIGN От 1 до 3-х подписей (TYPE, TIME, USER_ID, PROJECT_ID, LANG_ID, COMMENT) от пользователя USER_ID Пример транзакции ( [type] => 47 [time] => 1408475862 [user_id] => 1 [project_id] => 4 [lang_id] => 42 [comment] => Test [sign] => 820100beb4a532f32b465b86d4ad54245e121d083a031e75da6c270af906ea55914bbc51ec6dcbfde872600b3d154d7f72dc70706a76ef153ec693dc2baf8f5938e393dc91fdc376cf5beada0bcf51aa4d409cf802b01738aae8c709b7734d68a84addd8bebd9079a4843a746fa209e350b656dee5038540099e809de6850907103d41561ef67757a02f68f8f19822ed7e33a4698cc45d17c2de02ff8530dba4a9a9b3866a518e3aeb31488321439d31a24e8d5fbd711a2f120d6e714e061427916c9f22a7553395772aec400c8305d156b30bdd7ed568d1826f005b56a2ad2ac6aed607a1c204e8c39b07513435cff0b9c56746d39017f5dd4fe20b7ac2c83cb39959 ) После обработки такой транзакции в таблице cf_comments добавляется строка с новым комментарием к проекту. Вот и все транзакции, которые отвечают за функционирование краудфандинга в Dcoin.Дизайнер из меня никудышный, по-этому, чтобы не пугать людей своими художествами, я перерисовал дизайн страниц с проектами у кикстертера.
«Всё или ничего» Автор проекта не может забрать монеты, если проект еще не завершился. Это нужно для борьбы с мошенничеством. Допустим, набралось 80% от суммы, и вдруг кто-то из бекеров выясняет, что это, например, перепродажа какого-то товара с ebay в тридорого. Он пишет об этом в комментариях, и этот комментарий видят все старые и новые бэкеры. Часть старых бекеров отменит свой платеж, проект не наберет нужной суммы, и все монеты будут возвращены.Анонимность и безопасность Имея 3 ключа, привязанных к одному user_id, можно безопасно и анонимно пользоваться Dcoin. Вы просто вбиваете в браузере адрес любого пула, вводите 1-й ключ и попадаете в свой кабинет. В базе данных пула не останется никаких следов Вашего пребывания. В таком режиме можно переводить и получать монеты, создавать и финансировать краудфандинг-проекты. Если админ пула встроит скрипт, который будет отсылать на его сервер Ваш ключ, то он с ним ничего не сможет сделать, т.к. для любой транзакции от Вашего имени будет требоваться еще 2 подписи.Внешние гейты Любой желающий может распарсить блокчейн и получить список всех краудфандинг-проектов, оформив это в виде сайта, например, вот такого — dcrowd.org.Как запустить свой краудфандинг-проект 1. Возьмите ключ тут, тут или у какого-нибудь майнера.2. Зайдите в пул или поставьте исходники, укажите взятый в п.1 ключ3. Нажмите «Запустить свой краудфандинг-проект»(Если хотите сохранить аккаунт за собой, то не забудьте сменить ключ)
