Что мне не нравится в краудфандинговых площадках:
— огромная комиссия — до 10%
— жесткая модерация — не любой проект можно опубликовать
— отсутствие мультиязычного описания проектов и большие трудности с переводом денег, если бэкер, например, из Китая
— невозможность вернуть хотя бы часть денег, если автор проекта не выполняет свои обязательства в указанный срок.
Все вышеперечисленные проблемы я, частично или полностью, решил в своей криптовалюте, в которую встроил механизм децентрализованного краудфандинга.
В 2-х словах о том, что у меня получилось
- Механизм краудфандинга внедрен в сам протокол Dcoin. Данные о проектах, бэкерах, комменты копируются на все ноды. Никакие центральные сервера не нужны (за исключением фотохостингов, типа imgur.com, для размещения описаний проектов).
- Комиссия 0,1% (достается нодам, подписывающим блок).
- Разместить можно абсолютно любой проект, никто не может заблокировать ни проект, ни кошелек.
- Можно собирать средства, оставаясь анонимным.
- Можно добавить описание на 10-и языках.
- Если Вам нужны рубли, то Вы можете собирать именно рубли. Если кто-то из Китая решил вложить в Ваш проект 300 юаней, ему нужно будет зайти на валютную биржу (кстати, тоже децентрализованную и встроенную в Dcoin) и обменять юани на рубли.
- Если проект набирает обозначенную сумму, тогда автоматически выпускается новая криптовалюта. Монеты этой валюты автоматически распределяются между всеми бэкерами пропорционально суммам, которые они вложили в проект. Монеты проекта можно свободно продавать и покупать на биржах. Автор проекта должен будет продать свой продукт за данную валюту. Таким образом, валюта выходит из обращения в тот момент, когда автор проекта выполнил свои обязательства. Если бэкер передумал ждать, когда будет готов продукт, то он может продать монеты на бирже тем, кто готов ждать до победного конца.
Про Dcoin
Dcoin — децентрализованная криптовалюта, которая функционирует с апреля 2014. Имеет 2 типа аккаунтов — анонимные и майнерские. Если покупать монеты на бирже, то можно использовать простой анонимный аккаунт. Анонимные аккаунты и средства, находящиеся на их кошельках невозможно ни заблокировать, ни удалить.
В отличие от биткоина, в 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 проекта <= time из блока, тогда проект закрывается — в cf_projects в close_block_id указывается ID текущего блока. Далее возможны 2 сценария:
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. Нажмите «Запустить свой краудфандинг-проект»
(Если хотите сохранить аккаунт за собой, то не забудьте сменить ключ)
Автор: c-darwin