Децентрализованный краудфандинг для любых проектов

Что мне не нравится в краудфандинговых площадках: — огромная комиссия — до 10%— жесткая модерация — не любой проект можно опубликовать— отсутствие мультиязычного описания проектов и большие трудности с переводом денег, если бэкер, например, из Китая— невозможность вернуть хотя бы часть денег, если автор проекта не выполняет свои обязательства в указанный срок.Все вышеперечисленные проблемы я, частично или полностью, решил в своей криптовалюте, в которую встроил механизм децентрализованного краудфандинга.407e49cf6e4949d7bbc02dc4c5ee46b6.jpg

В 2-х словах о том, что у меня получилосьМеханизм краудфандинга внедрен в сам протокол Dcoin. Данные о проектах, бэкерах, комменты копируются на все ноды. Никакие центральные сервера не нужны (за исключением фотохостингов, типа imgur.com, для размещения описаний проектов). Комиссия 0,1% (достается нодам, подписывающим блок). Разместить можно абсолютно любой проект, никто не может заблокировать ни проект, ни кошелек. Можно собирать средства, оставаясь анонимным. Можно добавить описание на 10-и языках. Если Вам нужны рубли, то Вы можете собирать именно рубли. Если кто-то из Китая решил вложить в Ваш проект 300 юаней, ему нужно будет зайти на валютную биржу (кстати, тоже децентрализованную и встроенную в Dcoin) и обменять юани на рубли. Если проект набирает обозначенную сумму, тогда автоматически выпускается новая криптовалюта. Монеты этой валюты автоматически распределяются между всеми бэкерами пропорционально суммам, которые они вложили в проект. Монеты проекта можно свободно продавать и покупать на биржах. Автор проекта должен будет продать свой продукт за данную валюту. Таким образом, валюта выходит из обращения в тот момент, когда автор проекта выполнил свои обязательства. Если бэкер передумал ждать, когда будет готов продукт, то он может продать монеты на бирже тем, кто готов ждать до победного конца. Про Dcoin Dcoin — децентрализованная криптовалюта, которая функционирует с апреля 2014. Имеет 2 типа аккаунтов — анонимные и майнерские. Если покупать монеты на бирже, то можно использовать простой анонимный аккаунт. Анонимные аккаунты и средства, находящиеся на их кошельках невозможно ни заблокировать, ни удалить.Еще немного подробностей про Dcoin Dcoin разрабатываю в одиночку больше 3-х лет. В Dcoin нет центральных серверов, также как в Bitcoin у каждой ноды хранится полная копия базы данных. Обмен новыми данными между нодами происходит при помощи блоков. Каждый блок содержит хэш предыдущего блока. Каждая транзакция от пользователя содержит подпись, которая доказывает, что транзакция именно от этого пользователя.9a548016e680400cb322f6a90fa89be1.pngВ отличие от биткоина, в 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. Добавление нового проекта Запуск нового проекта очень прост. Нужно всего лишь заполнить несколько полей.9703feba03234939ad70bc73342f6c9a.png

Через несколько минут после отправки в 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 картинок. Это необходимо для того, чтобы переложить ответственность за содержимое контента с немодерируемых нодов на хостинг, где будет размещена картинка, а также — для экономии места в БД нодов.df53c2640eaa4d09936f3868eb53a36b.png

Как это выглядит изнутри Структура транзакции Поле Описание 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, либо, если запись с таким же языком для такого же проекта уже есть, то обновляется существующая. Отправка монет в краудфандинг-проект Для того чтобы профинансировать какой-то проект, нужно просто кликнуть «Профинансировать», после чего откроется вот такая форма: d43be2d96eee4c8caa1e558a71514346.png

Как это выглядит изнутри Структура транзакции Поле Описание 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. Комментарии Комментарии могут писать только те, кто профинансировал проект, либо автор проекта. Удалять комментарии нельзя.85fa06feedc24d31b598d057bedef6ea.png

Как это выглядит изнутри Структура транзакции Поле Описание 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. Нажмите «Запустить свой краудфандинг-проект»(Если хотите сохранить аккаунт за собой, то не забудьте сменить ключ)

© Habrahabr.ru