КрияДеньги. Часть 1. Введение
КрияДеньги. Часть 2. Идея
КрияДеньги. Часть 3. Теория
КрияДеньги. Часть 4. Проблемы и их решение
КрияДеньги. Часть 5. Программная реализация
Предупреждение!
В этой статье, как и в предыдущей, очень много формул и почти нет картинок. Так что статья будет интересна далеко не всем.
Проблема оценки проекта
— Сообщества
— Формулы
— Инвайты
Проблема сговора с целью накруток
Проблема автономного функционирования изолированной подсети
Проблема offline-платежей
Проблема «распухания» базы данных
Проблема «плохих» авторов
Проблема анонимности/не анонимности
Дополнительные возможности
Пример
Еще раз про ценности
UI Design
Ссылки
Те, кто пробовал разобраться в формулах предыдущей части могли понять, что те формулы не применимы для создания работоспособной системы. Основная причина проблемы — это то, что люди, в основном, производят оценку не на основании собственных умозаключений, а основываясь на мнение большинства. Это эффект толпы и от него никуда не деться. Такова природа человека. При открытом голосовании невозможно всех заставить выставлять оценки объективно. Большинство все-равно, будет основываться на авторитетность своего знакомого/друга/эксперта, или из-за боязни что его оценку, отличную от других, увидят и будут «мстить» и т.п.
Кстати, на Хабре, этот эффект решается путем тайного голосования. То есть нет возможности отследить кто именно минусует карму (если вы не администратор) и, соответственно, не известно кому «мстить». Иногда в обсуждениях встречались перепалки с возмущениями по поводу «слитой кармы» с попытками выяснить кто это сделал и почему и т.д. Но такое выяснение отношений не приносит никакого результата. Видимо поэтому последнее время такие возмущения появляются все реже (или я их просто не замечаю).
Однако, если система задумывается как децентрализованная, то вариант тайного голосования не применим. Значит, каждый должен будет оценивать со всей прилагающейся ответственностью. А это психологически сложно и не каждый рискнет выставить оценку отличную от остальных. Кроме этого существует такая проблема как не адекватная оценка проектов малограмотными пользователями. То есть не все пользователи хотят разбираться в тонкостях проблем реализации проекта и поэтому оценивают проект очень субъективно. Поэтому нужно мотивировать пользователей выставлять объективные оценки на основе собственного осознанного мнения.
Для решения этой проблемы можно предложить ввести понятие сообществ внутри которых пользователи смогут оценивать проекты свободно, так же смогут выносить оценки те пользователи, которые участвовали в проекте (вкладывались в проект). Мнение остальных пользователей тоже должно учитываться, не так значительно как мнение экспертов и вкладчиков. При этом усложняется модель взаимодействия и усложняются расчетные формулы. Поэтому предлагаю выделить следующие группы «голосующих»:
1) вкладчики;
2) эксперты;
3) остальные пользователи.
Под экспертами подразумеваются члены локального тематического сообщества членом которого является автор оцениваемого проекта. Подробнее опишу ниже.
Людей много и все они разные. Какой-то единой ценности абсолютно для всех не существует. У каждого человека и у каждого отдельного сообщества складывается некоторый свой набор ценностей. Для кого-то ценностью является познание устройства мироздания, для других ценность — это попить пива на лавке.
Поэтому, необходимо группировать проекты в отдельные тематические группы, которые будут существовать параллельно. А пользователей, аналогично, объединять в сообщества. Для определения ценности конкретного проекта в конкретной группе нужны эксперты по тематике этого проекта. В качестве экспертов по данной тематике будут выступать сами члены локального сообщества.
Крия локального проекта зависит от ценности для общества в целом. Следовательно Крия проекта должна зависеть как от ценности проекта для локального сообщества, так и ценности конкретного сообщества для других сообществ.
Вероятно каждое конкретное тематическое сообщество будет иметь свою ценность для общества в целом. И, собственно, та работа которая производилась в конкретном сообществе будет иметь какую-то свою «значимость» для других. Но для удобства пользования системой нужна некоторая единая мера. Единой мерой по прежнему остается Крия. Поэтому, начисления Крия нужно производить как с учетом «значимости» работы для общества так и с учетом «значимости» работы для сообщества. От значения Крия будет зависеть эмиссия.
Когда участники положительно оценивают деятельность и готовы вкладывать свои деньги, то это значит что общество ценит эту деятельность. Очевидно, что для всех остальных проект не будет являться «значимым» и соответственно они не будут вкладывать свои деньги в этот проект.
На определение значимости проекта влияют следующие группы пользователей:
1) вкладчики — те, кто вложил свои деньги в проект;
2) эксперты — те, кто является достаточно компетентными;
3) все остальные.
Вкладчики — это те пользователи, которые вкладывают свои средства в проект. Для вложения в проект не нужно создавать свои проекты, как-то зарабатывать эмиссию и т.д, а нужно только иметь на счету какое-то положительное кол-во денег. При этом их можно купить на обменной бирже или у другого пользователя системы. Поэтому вкладчиком может быть любой человек.
Под экспертами будем понимать членов локального сообщества. Предполагаем, что в сообщество пользователи вступают с целью создания проектов с тематикой данного сообщества. И поэтому являются профессионалами. А это значит, что они смогут выступить в роли экспертов. То есть могут достоверно оценить техническую часть реализации проекта. Вкладчики проекта оценивают с позиции потребителя, а эксперты оценивают с технической точки зрения (его сложность, качество, надежность).
Все остальные же, наблюдая со стороны за происходящими событиями могут оценивать тематическое сообщество проекта в целом и каждый проект в частности. Если эксперты будут голосовать положительно за плохой проект, то это приведет к потере интереса общества к такому сообществу «экспертов». Таким образом экспертам нужно будет выставлять адекватную и аргументированную оценку, чтобы вес сообщества поддерживать на максимально высоком уровне.
В связи со всем написанным выше требуется переопределить формулы, описанные в третьей части.
Формула изменения Артха пользователя после завершения голосования:
Формула эмиссии новых денег (при положительной Крия) будет рассчитываться так:
Повторюсь, что новые деньги прибавочной ценности эмитируются один раз для каждого проекта. При нулевом или отрицательном значении Крия эмиссия, естественно, не производится (равна нулю).
Формула расчета коэффициента эмиссии за предыдущий расчетный период (например за предыдущие 65536 циклов):
где
СрЭмЗаЕдКрияЗаНесколькоПериодов — Средняя эмиссия за единицу Крия за несколько последних периодов
СрЭмЗаЕдКрияЗаРасчетныйПериод — Средняя эмиссия за единицу Крия за расчетный период
где
СуммаВсехДенег — Сумма всех денег эмитируемых за эти несколько последних периодов
где
СуммаВсехДенегПериода — Сумма всех денег эмитируемых за расчетный период
Повторюсь, что в начальный период существования системы формула расчета КоэфЭмиссии не будет работать. Поэтому, до момента в 65536 циклов КоэфЭмиссии нужно или принять постоянной величины (константа) равное, например, 1.00. Или же по другому рассчитывать значения средней эмиссии.
Коэффициент эмиссии учтет общий рост (или падение) и скорректирует общую эмиссию системы. Это добавит стабильности для системы в целом. Если эмиссия системы стала сильно большой, то этот коэффициент ограничит эмиссию и наоборот. Кроме этого, по сути, этот коэффициент показывает сложность получения новых денег.
Кол-во периодов для расчета коэффициента эмиссии нужно принять не сильно большое и не сильно маленькое. Я попытался смоделировать ситуации роста суммарного Крия в системе (когда создается много хороших проектов), ситуацию падения, ситуацию стагнации (когда проектов очень мало) и ситуацию бурного роста. Рассмотрел одинаковый вариант развития событий, но с разным кол-вом периодов для расчета значения СрЭмЗаЕдКрияЗаНесколькоПериодов (2 периода, 4 периода и 8 периодов). Результаты расчетов можно увидеть на графиках.
Коэффициент эмиссии несколько сглаживает общую эмиссию. А в периоды стагнации коэффициент эмиссии довольно значительно вырастет, что по идее, должно стимулировать авторов создавать новые проекты. И, как только кол-во проектов начнет расти (начнет увеличиваться суммарная Крия системы за цикл), то коэффициент эмиссии автоматически пересчитается.
Кроме этого, нужно предусмотреть следующую ситуацию. Если один из проектов будет с очень большой Крия, по сравнению с другими проектами, то это приведет к перекосу эмиссии в пользу одного этого проекта. И тогда появится возможность для монополизма. Чтобы такого перекоса не случалось предлагаю ограничить максимальную сумму эмиссии для одного проекта, например, как 1/16 часть от среднего значения эмиссии за последние несколько периодов.
Начисления Крия будут зависеть от коэффициентов локальных тематических сообществ. Поэтому формула станет более сложная и поэтому в формуле определения Крия стоит заменить параметр ОценкаПроекта на ЗначимостьПроекта. Где под «значимостью» понимается коэффициент действительной ценности этого проекта для общества в целом.
Формула для определения значения Крия получится такая:
Формула определения значимости проекта:
где
ОценкаПроекта — это составная формула, которая зависит от мнения вкладчиков, от мнения экспертов и от мнения общества в целом.
ЗначимостьСообщества — это значимость сообщества, в котором состоит автор для общества в целом. Подробнее см. ниже.
Предлагаю такую формулу определения значения оценки проекта:
При этом, вероятнее всего оценка от общества будет иметь значение близкое к нулю и мало будет влиять на расчет Крия. Однако, вероятно необходимо предусмотреть вето вкладчиков, вето экспертов и вето общества. (Спасибо за идею IrQ.)
Под вето я, здесь, понимаю запрет на прибавление положительного Крия автору и начисление эмисии. Например, если четверть всех вкладчиков или четверть всех экспертов или четверть всех проголосовавших пользователей системы проголосует против проекта, то блокировать право на эмиссию этому проекту. При этом тех, кто не голосовал вовсе можно не учитывать.
Оценка проекта от вкладчиков зависит от оценки и «веса» каждого вкладчика. Вес вкладчика определяется тем количеством денег, которое он вложил в проект. Оценка вкладчиков определяется как средняя оценка всех вкладчиков в соответствии с «весом» их вклада:
Формула определения значения оценки от вкладчиков будет такой:
Вкладчики, по идее, должны получить результат вложенных денег и оценить этот результат. Если вкладчик остался доволен, то голосует +1, если не доволен, то голосует -1, по умолчанию 0.
Оценка экспертного сообщества зависит от оценки и от «веса» каждого эксперта. Вес эксперта (вес экспертного мнения) зависит от его Крия в данном сообществе. Пока я рассматриваю случай, что каждый пользователь состоит только в одном сообществе. Но, по идее (по модели), каждый пользователь одновременно может состоять в нескольких сообществах. Оценка экспертов определяется как средняя оценка всех членов сообщества в соответствии с их «весом» в сообществе.
Формула оценки от экспертов будет такой:
где
КрияСообщества — сумма Крия всех экспертов в сообществе
При этом экспертам с одной стороны выгодно голосовать всегда положительно за проект, т.к. это приводит к увеличению Крия (и возможной эмиссии) автора проекта. Но с другой стороны это приводит к уменьшению их относительного веса внутри сообщества. Но если члены сообщества будут всегда голосовать только положительно, то это может отразиться на интересе общества в целом к конкретному тематическому сообществу.
Формула оценки от общества в целом будет такой:
где
Оценка — это «голос» пользователя (+1, 0 или -1)
Крия — это суммарный Крия пользователя (сумма Крия всех его проектов)
СуммаВсехКрияСистемы — сумма всех Крия всех проектов всех пользователей системы
Вес значимости сообщества (ценность локального тематического сообщества) определяется как доля интереса всего общества к определенной тематике:
Или, по другому, для определения значимости сообщества можно предложить такую формулу:
где
Оценки — сумма оценок от пользователей выставленные конкретному рассматриваемому сообществу
Каждый пользователь может выставить свою оценку для сообщества. Под оценкой здесь понимается некоторое значение от негативного (-1) до позитивного (+1) и по умолчанию имеет нейтральное значение (0). Это значение каждый пользователь может менять сколько угодно раз. При расчете будет учитываться только текущее значение оценки каждого пользователя. Таким образом, оценки пользователя будут отражать отношение этого пользователя к тем или иным тематическим сообществам.
Кроме того, каждый конкретный пользователь имеет свой «вес» в обществе и в сообществе.
Вес каждого пользователя в сообществе вычисляется следующим образом:
где
КрияСообщества — сумма Крия всех членов сообщества
Напоминаю, если пользователь состоит в нескольких сообществах, то здесь учитываются только Крия этого сообщества. Но мы это пока не рассматриваем.
Вес пользователя в обществе вычисляется так:
или
Кроме всего прочего, для уменьшения вероятности мошенничества (и для повышения престижности каждого сообщества), необходимо сделать возможность добавления новых членов в сообщество только по инвайтам. При этом предполагается что инвайты будут образовываться у авторов проектов с положительной Крия. При достижении определенного значения Крия будет возможность пригласить нового пользователя.
В случает, если у пользователя Крия снизится ниже нуля, то никакого «сброса кармы» (Reset) не будет. Человеку придется заново выискивать того кто согласится подарить ему инвайт. Естественно информация об инвайтах, как и всех остальных операциях в системе, будет доступна всем. Так что можно будет однозначно определить кто и кому выдал инвайт. Если подопечный будет создавать плохие проекты, то это косвенно скажется на том кто выдал инвайт.
По хорошему, присекание накруток мошеннических проектов-пустышек будут осуществлять все пользователи системы минусуя проект. То есть общество, в идеале, должно само определить какой проект хороший, а какой плохой. Однако, для того, чтобы этот механизм работал в реальности обязательно требуется наличие понятий «сообщество», «эксперты», «вкладчики» и, соответственно, «вес сообщества», «вес эксперта», «вес вкладчика». Кроме того нужно установить минимальные и максимальные сроки сбора средств и реализации проекта и нужно установить срок от момента окончания голосования до момента эмиссии.
Минимальный и максимальный сроки сбора средств нужно ограничить для удобства использования. Например минимальный срок сбора средств задать равным 256 циклов (65536 секунд ~ 18 часов), а максимальный 42*256 циклов (2752512 секунд ~ 1 месяц).
Срок от момента окончания голосования до момента эмиссии нужен для того, чтобы у пользователей было время изменить свою оценку сообществу экспертов. Т.к. Крия и эмиссия зависят как от оценки экспертов, так их «веса», то в случае, если эксперты не адекватно оценили (завысили) результат выполнения проекта, то общество в целом будет иметь возможность «скорректировать» эту несправедливость изменением (в меньшую сторону) «веса» сообщества экспертов. Например, срок от момента окончания голосования до момента эмиссии можно задать равным 65536 циклам (~194 дня). Это должно стимулировать авторов выполнять свою работу максимально качественно.
При изоляции части сети внутри локальной области остается возможность проведения транзакций (с последующим слиянием данных разных подсетей). И даже можно заложить возможность параллельной эмиссии в локальных подсетях с последующим слиянием и пересчетом. Это можно реализовать, если деньги за проекты эмитировать не сразу, а через некоторый промежуток времени, в течение которого возможно произвести слияние с пересчетом эмитируемых средств по каждому конкретному проекту. Например, можно эмиссию после окончания голосования производить через 16*256 циклов (что соответствует промежутку примерно в 12 дней). За это время, наверняка, получится восстановить связь между отдельными подсетями и произвести синхронизацию.
Даже в случае полной блокировки какой-либо отдельной страны от остального мира за 12 дней можно данные переправить на флешках, с помощью беспилотника и т.п. Такая платежная система, теоретически, даже сможет работать не только в пределах планеты Земля, но и на других соседних планетах.
Правда остается вероятность одновременной передачи денег с одного кошелька в разных подсетях, что вызовет коллизию при синхронизации (слиянии). Чтобы размеры таких двойных одновременных оплат в разных подсетях не был сильно большим, как вариант, можно предложить для разных сумм транзакций назначать разное время подтверждения. Например, при передаче суммы до 1000 единиц принимать срок подтверждения создания блока (256 сек), при передаче суммы до 1000000 единиц принимать срок подтверждения 16 циклов (~1 час), при передаче суммы до 1000000000 единиц принимать срок подтверждения 256 циклов (~18 часов), при передаче суммы более 1000000000 единиц принимать срок подтверждения 16*256 циклов (~12 дней). А для «микроплатежей» можно не дожидаться подтверждения транзакции в блоке, а достаточно запросить подтверждения у нескольких ближайших узлов. При современных скоростях интернета такой опрос вероятно займет не более нескольких секунд. Но над этим всем надо будет еще подумать.
В комментариях к предыдущей части был вопрос про возможность оплаты offline. Я ответил, что это в системе не предусмотрено. Однако, можно предложить следующую технологию условно-offline электронных денег. Для реализации оплаты, без доступа к своему «кошельку» предлагаю ввести понятие «монета». Под «монетой» здесь понимается некоторый файл, который создается владельцем кошелька. Каждая «монета» выпускается с определенным номиналом. В момент создания этой монеты в системе создается специальная транзакция — передача денег от пользователя на создание «монеты». Со счета пользователя эти деньги списываются. Во время создания монеты будет сгенерирована пара ПубличныйКлюч+СекретныйКлюч. В транзакции будет указан номер публичного ключа, а в файле «монеты» будет содержаться секретный ключ.
Оплата условно-offline будет происходить следующим образом:
Этапы offline платежа:
1) Плательщик (допустим покупатель) передает файл «монеты» продавцу offline.
2) Продавец получает файл и ищет запись транзакции создания этой монеты.
3) Если такая транзакция существует, то продавец далее осуществляет проверку — ищет транзакцию уничтожения монеты.
4) Если транзакции уничтожения не было, значит все хорошо и такую монету можно принять к оплате.
Этапы, требующие online подключения:
5) Далее держатель монеты (продавец) должен «обезналичить» полученную монету. Для этого он создает специальную транзакцию в которой указывает какую монету он обезналичивает и указывает секретный ключ этой монеты.
* Более лучшего слова, кроме как «обезналичить», я не смог найти. Подскажите пожалуйста подходящее название?
Таким образом другие пользователи системы могут убедится, что монета действительно находится у того кто ее «обезналичивает». Транзакция уничтожения монеты допускается только один раз. Если покупатель-мошенник смог расплатится одной монетой два раза, то деньги получит только тот продавец, который первый создаст транзакцию уничтожения монеты.
Для уменьшения возможности мошенничества необходимо ограничить номинал одной монеты. Кроме того, чтобы монеты не создавались в огромных количествах необходимо ввести некоторую комиссию за создание монеты (например при создании монеты номиналом 100.00 единиц нужно будет создать транзакцию на 100.01 единицу денег). А так же нужно установить максимальный срок от момента создания монеты до момента ее уничтожения. Если монета в заданный срок не уничтожится (не будет создано соответствующей транзакции), то такая монета будет считаться потерянной и деньги за нее не возвращаются.
База транзакций, проектов и их оценок будет увеличиваться очень быстро. Чтобы минимизировать нагрузку можно заложить в систему оплату каждой транзакции и каждого голоса (предусмотреть самую минимальную стоимость, которую вычитать при транцакции). Например отправитель передает 1000.01 единиц, а получатель получит только 1000.00 единиц денег. Это решение выступает в роли «налога» за обеспечение хранения транзакций другими участниками (при ликвидации одной единицы денег автоматически стоимость оставшихся чуть возрастает).
Кстати, вероятно вместо того, чтобы каждому держать на своем компьютере клиент для такой системы, гораздо проще и выгоднее будет отдавать свои «деньги» в доверительное управление и работать с системой через Web-формы. Как это сейчас практикуется с Bitcoin.
Кроме этого можно в системе предусмотреть пересоздание базы данных через определенные периоды времени. При этом в новую базу будут копироваться только актуальные транзакции, а все промежуточные останутся в архивной базе данных. После проверки и подтверждения правильности новых транзакций, данные новой базы будут считаться такими же достоверными. И для вновь подключившимся пользователям не придется скачивать историю всех транзакций проведенных за всё время существования системы.
Для того чтобы отличать плохих авторов от хороших у каждого будет свой «рейтинг» в виде значения Крия, которое показывает на сколько хорошо были выполнены предыдущие проекты этого автора. Для отфильтровывания плохих авторов можно при отрицательном значении Крия запрещать создание новых проектов.
В этом случае человек сможет заново зарегистрироваться в системе, присоединиться к тому или иному сообществу как-то получив инвайт. И, таким образом, сможет начать карьеру «с чистого листа».
Каждый пользователь системы может оставаться анонимным, если не будет раскрывать своих личных данных и будет использовать I2P и т.п. каналы передачи данных. В любом случае, узнать точное кол-во денег у того или иного пользователя будет довольно сложно, т.к. при каждой транзакции создаются новые пары ключей (публичный и секретный) — так же, как это реализовано в системе Bitcoin. То есть, по сути, как такового кошелька с единым счетом у пользователя не существует. Вместо этого в кошельке хранится лишь информация о транзакциях, хеши которых были сгенерированы для этого пользователя и которыми он может распоряжаться. При этом у каждого человека может быть несколько кошельков. В этом случае определить сколько денег есть в наличие у конкретного человека становится крайне затруднительно.
Систему можно применять не только для осуществления платежей и создания крауд-проектов. Но можно использовать такую систему для оценки ценности OpenSource-проектов, а так же для фриланс-проектов.
Для оценки ценности OpenSource проектов предлагаю следующее. Для OpenSource проекта создавать проект с максимальным сроком сбора средств, с минимальной суммой вклада в проект и с нулевым сроком выполнения проекта. Таким образом вкладчики будут осуществлять Donate (поддерживать) проект. После завершения сбора средств сразу будет идти этап оценки проекта. А по результатам оценки автору проекта будут начисляться Крия и эмиссия (при положительном значении Крия). После завершения этого проекта, при желании, автор OpenSource-проекта может создать следующий проект по сбору средств.
Для реализации фриланс-проектов можно предложить следующую схему.
1) Заказчик создает задание и подыскивает Исполнителя на какой-либо фриланс-площадке.
2) Далее, Исполнитель создает проект в системе, где максимально четко прописывает ТЗ, стоимость и пр.
3) После того, как проект создан, Заказчик его полностью оплачивает.
4) Далее идет этап выполнения проекта.
5) По результатам выполнения работы этот проект оценивает как Заказчик, так и эксперты и общество в целом.
6) За тем производится начисление Крия и, если проект оценён положительно, то создается эмиссия в пользу Исполнителя.
Здесь описана работа по 100% предоплате. Если Исполнитель не выполнит работу или выполнит ее не качественно, то поплатится своим уровнем Крия. Кроме того, в системе доступна вся история проектов (как портфолио). Поэтому, даже если Крия у Исполнителя будет положительная, но история подпорчена, то такой Исполнитель уже не будет вызывать доверия.
Допустим Пользователь0 успешно работал над проектом программы для смартфонов за 300 единиц денег. При этом многим людям не связанных с данной темой было интересно увидеть результат — это и является ценностью общества к деятельности локального сообщества. При этом некоторые решают вложиться в проект.
Допустим существует три сообщества: СоздателиПрограммДляСмартфонов (1), СоздателиТабуреток (2), СоздателиМузыкальныхПроизведений (3).
Пользователь0 ведет разработку как член сообщества СоздателиПрограммДляСмартфонов.
Допустим есть еще шесть пользователей (каждый из них состоит в своем сообществе) с такими Крия:
Пользователь11 — СообществоСоздателейПрограммДляСмартфонов (1)
Пользователь12 — СообществоСоздателейПрограммДляСмартфонов (1)
Пользователь13 — СообществоСоздателейПрограммДляСмартфонов (1)
Пользователь21 — СообществоСоздателейМузыкальныхПроизведений (2)
Пользователь22 — СообществоСоздателейМузыкальныхПроизведений (2)
Пользователь23 — СообществоСоздателейМузыкальныхПроизведений (2)
Пользователь31 — СообществоСоздателейТабуреток (3)
Пользователь32 — СообществоСоздателейТабуреток (3)
Пользователь33 — СообществоСоздателейТабуреток (3)
Предположим у пользователей такие значения Крия:
КрияПользователя11 1000
КрияПользователя12 2000
КрияПользователя13 3000
КрияПользователя21 4000
КрияПользователя22 5000
КрияПользователя23 6000
КрияПользователя31 7000
КрияПользователя32 8000
КрияПользователя33 9000
При этом у одного реального человека может быть зарегистрировано несколько аккаунтов (в разных сообществах), но мы пока это не учитываем. Отмечу так же, что для вступления в каждое сообщество нужно получать инвайт от члена этого сообщества.
Таким образом сумма Крия в сообществах будет такой:
СуммаКрияСоздателейПрограммДляСмартфонов = 1000 + 2000 + 3000 = 6000
СуммаКрияСоздателейТабуреток = 4000 + 5000 + 6000 = 15000
СуммаКрияСоздателейМузыкальныхПроизведений = 7000 + 8000 + 9000 = 24000
Тогда вес каждого пользователя в сообществе будет таким:
ВесПользователя11 = 1000 / 6000 = 0.167
ВесПользователя12 = 2000 / 6000 = 0.333
ВесПользователя13 = 3000 / 6000 = 0.500
ВесПользователя21 = 4000 / 15000 = 0.267
ВесПользователя22 = 5000 / 15000 = 0.333
ВесПользователя23 = 6000 / 15000 = 0.400
ВесПользователя31 = 7000 / 24000 = 0.292
ВесПользователя32 = 8000 / 24000 = 0.333
ВесПользователя33 = 9000 / 24000 = 0.375
Допустим, что каждый из пользователей вкладывает средства на реализацию проекта создания программы для смартфона следующие суммы:
Пользователь0 — 90 единиц
Пользователь11 — 60 единиц
Пользователь12 — 50 единиц
Пользователь21 — 40 единиц
Пользователь22 — 30 единиц
Пользователь31 — 20 единиц
Пользователь32 — 10 единиц
ОбщаяСумма = 300 единиц денег
Как можно заметить Пользователь0 вкладывает свои же средства в свой собственный проект. Это не запрещено.
Допустим вкладчики так оценили проект создания программы для смартфона:
Пользователь11 +1
Пользователь12 -1
Пользователь21 +1
Пользователь22 0
Пользователь31 +1
Пользователь32 -1
Пользователь13, Пользователь23 и Пользователь33 не вкладывались в проект и не участвуют в голосовании. И Пользователь0, естественно, тоже не участвует в голосовании.
Тогда, для нашего примера оценка вкладчиков составит следующую величину (формула 7):
ОценкаОтВкладчиков = (+1*60 -1*50 +1*40 +0*30 +1*20 -1*10) / 300 = +0.20
Допустим эксперты (члены сообщества СоздателиПрограммДляСмартфонов) так оценили проект:
Пользователь11 +1
Пользователь12 -1
Пользователь13 +1
Тогда, для нашего примера оценка экспертов составит следующую величину (формула 8):
ОценкаОтЭкспертов = (+1*0.167 -1*0.333 +1*0.500) / 3 = +0,33
Допустим пользователи, не являющиеся ни экспертами, ни вкладчиками оценили проект так:
Пользователь23 +1
Пользователь33 -1
Тогда оценка общества в целом составит (формула 9) (в этой формуле, учитываются все пользователи, даже если они являются вкладчиками и/или экспертами):
ОценкаОтОбщества = (+1*1000 -1*2000 +1*3000 +1*4000 +0*5000 +1*6000 +1*7000 -1*8000 -1*9000) / 45000 = +0.13
Тогда, оценка проекта для нашего примера составит (формула 6):
ОценкаПроекта = (+0.20 +0.33)/2 +0.13 = +0.40
Допустим вес сообщества СоздателиПрограммДляСмартфонов равен 0.300
Тогда значимость проекта будет такой (формула 5):
ЗначимостьПроекта = +0.40*0.300 = +0.120
Ценность проекта (КрияПроекта) будет такой:
КрияПроекта = +0.120*300 = +36 > 0 => Эмиссия
Допустим коэффициент эмиссии в данный момент равен:
КоэфЭмисии = 1.1
Тогда эмиссия новых денег составит (дробные значения отбрасываются):
Эмиссия = 1.1*36 = 39 единиц денег
Кроме всего написанного выше хочу еще раз сказать, что ценность определяется готовностью других людей вкладывать деньги в интересующий их проект. А интерес к проекту зависит от надежности автора, надежности сообщества в котором состоит автор и от запрашиваемой суммы. При этом каждый человек при оплате соизмеряет стоимость какую выставляет автор проекта с оплатой которую заработал сам человек.
Например, если некто создал проект надувания воздушных шариков за 1000 единиц денег, а ранее я целый месяц делали программу за 2000 единиц денег, то вкладываться в надувание шариков за такую стоимость я точно не буду.
В конце статьи я бы хочу привести вариант UI будущей программы. Прошу не судить строго.
Хорошая статья со статистикой успешности «народных складчин»:
И опять краудфандинг: сегодня по-американски
P.S. Мне бы хотелось определить на сколько интересна Хабрасообществу предложенная идея. Для этого предлагаю более расширенное голосование, чем просто отмечать +1 или -1.
КрияДеньги. Часть 2. Идея
КрияДеньги. Часть 3. Теория
КрияДеньги. Часть 4. Проблемы и их решение
КрияДеньги. Часть 5. Программная реализация
Предупреждение!
В этой статье, как и в предыдущей, очень много формул и почти нет картинок. Так что статья будет интересна далеко не всем.
Содержание
Проблема оценки проекта
— Сообщества
— Формулы
— Инвайты
Проблема сговора с целью накруток
Проблема автономного функционирования изолированной подсети
Проблема offline-платежей
Проблема «распухания» базы данных
Проблема «плохих» авторов
Проблема анонимности/не анонимности
Дополнительные возможности
Пример
Еще раз про ценности
UI Design
Ссылки
Проблема оценки проекта
Те, кто пробовал разобраться в формулах предыдущей части могли понять, что те формулы не применимы для создания работоспособной системы. Основная причина проблемы — это то, что люди, в основном, производят оценку не на основании собственных умозаключений, а основываясь на мнение большинства. Это эффект толпы и от него никуда не деться. Такова природа человека. При открытом голосовании невозможно всех заставить выставлять оценки объективно. Большинство все-равно, будет основываться на авторитетность своего знакомого/друга/эксперта, или из-за боязни что его оценку, отличную от других, увидят и будут «мстить» и т.п.
Кстати, на Хабре, этот эффект решается путем тайного голосования. То есть нет возможности отследить кто именно минусует карму (если вы не администратор) и, соответственно, не известно кому «мстить». Иногда в обсуждениях встречались перепалки с возмущениями по поводу «слитой кармы» с попытками выяснить кто это сделал и почему и т.д. Но такое выяснение отношений не приносит никакого результата. Видимо поэтому последнее время такие возмущения появляются все реже (или я их просто не замечаю).
Однако, если система задумывается как децентрализованная, то вариант тайного голосования не применим. Значит, каждый должен будет оценивать со всей прилагающейся ответственностью. А это психологически сложно и не каждый рискнет выставить оценку отличную от остальных. Кроме этого существует такая проблема как не адекватная оценка проектов малограмотными пользователями. То есть не все пользователи хотят разбираться в тонкостях проблем реализации проекта и поэтому оценивают проект очень субъективно. Поэтому нужно мотивировать пользователей выставлять объективные оценки на основе собственного осознанного мнения.
Для решения этой проблемы можно предложить ввести понятие сообществ внутри которых пользователи смогут оценивать проекты свободно, так же смогут выносить оценки те пользователи, которые участвовали в проекте (вкладывались в проект). Мнение остальных пользователей тоже должно учитываться, не так значительно как мнение экспертов и вкладчиков. При этом усложняется модель взаимодействия и усложняются расчетные формулы. Поэтому предлагаю выделить следующие группы «голосующих»:
1) вкладчики;
2) эксперты;
3) остальные пользователи.
Под экспертами подразумеваются члены локального тематического сообщества членом которого является автор оцениваемого проекта. Подробнее опишу ниже.
Сообщества
Людей много и все они разные. Какой-то единой ценности абсолютно для всех не существует. У каждого человека и у каждого отдельного сообщества складывается некоторый свой набор ценностей. Для кого-то ценностью является познание устройства мироздания, для других ценность — это попить пива на лавке.
Поэтому, необходимо группировать проекты в отдельные тематические группы, которые будут существовать параллельно. А пользователей, аналогично, объединять в сообщества. Для определения ценности конкретного проекта в конкретной группе нужны эксперты по тематике этого проекта. В качестве экспертов по данной тематике будут выступать сами члены локального сообщества.
Крия локального проекта зависит от ценности для общества в целом. Следовательно Крия проекта должна зависеть как от ценности проекта для локального сообщества, так и ценности конкретного сообщества для других сообществ.
Вероятно каждое конкретное тематическое сообщество будет иметь свою ценность для общества в целом. И, собственно, та работа которая производилась в конкретном сообществе будет иметь какую-то свою «значимость» для других. Но для удобства пользования системой нужна некоторая единая мера. Единой мерой по прежнему остается Крия. Поэтому, начисления Крия нужно производить как с учетом «значимости» работы для общества так и с учетом «значимости» работы для сообщества. От значения Крия будет зависеть эмиссия.
Когда участники положительно оценивают деятельность и готовы вкладывать свои деньги, то это значит что общество ценит эту деятельность. Очевидно, что для всех остальных проект не будет являться «значимым» и соответственно они не будут вкладывать свои деньги в этот проект.
На определение значимости проекта влияют следующие группы пользователей:
1) вкладчики — те, кто вложил свои деньги в проект;
2) эксперты — те, кто является достаточно компетентными;
3) все остальные.
Вкладчики — это те пользователи, которые вкладывают свои средства в проект. Для вложения в проект не нужно создавать свои проекты, как-то зарабатывать эмиссию и т.д, а нужно только иметь на счету какое-то положительное кол-во денег. При этом их можно купить на обменной бирже или у другого пользователя системы. Поэтому вкладчиком может быть любой человек.
Под экспертами будем понимать членов локального сообщества. Предполагаем, что в сообщество пользователи вступают с целью создания проектов с тематикой данного сообщества. И поэтому являются профессионалами. А это значит, что они смогут выступить в роли экспертов. То есть могут достоверно оценить техническую часть реализации проекта. Вкладчики проекта оценивают с позиции потребителя, а эксперты оценивают с технической точки зрения (его сложность, качество, надежность).
Все остальные же, наблюдая со стороны за происходящими событиями могут оценивать тематическое сообщество проекта в целом и каждый проект в частности. Если эксперты будут голосовать положительно за плохой проект, то это приведет к потере интереса общества к такому сообществу «экспертов». Таким образом экспертам нужно будет выставлять адекватную и аргументированную оценку, чтобы вес сообщества поддерживать на максимально высоком уровне.
Формулы
В связи со всем написанным выше требуется переопределить формулы, описанные в третьей части.
Формула изменения Артха пользователя после завершения голосования:
Артха += ЭмитируемыеНовыеДеньги
(1)Формула эмиссии
Формула эмиссии новых денег (при положительной Крия) будет рассчитываться так:
ЭмитируемыеНовыеДеньги = КоэфЭмиссии * КрияПроекта
(2)Повторюсь, что новые деньги прибавочной ценности эмитируются один раз для каждого проекта. При нулевом или отрицательном значении Крия эмиссия, естественно, не производится (равна нулю).
Формула расчета коэффициента эмиссии за предыдущий расчетный период (например за предыдущие 65536 циклов):
КоэфЭмиссии = СрЭмЗаЕдКрияЗаНесколькоПериодов / СрЭмЗаЕдКрияЗаРасчетныйПериод
(3)где
СрЭмЗаЕдКрияЗаНесколькоПериодов — Средняя эмиссия за единицу Крия за несколько последних периодов
СрЭмЗаЕдКрияЗаРасчетныйПериод — Средняя эмиссия за единицу Крия за расчетный период
СрЭмЗаЕдКрияЗаНесколькоПериодов = СуммаВсехДенег / КолвоЦикловЭтихНесколькихПериодов
(3a)где
СуммаВсехДенег — Сумма всех денег эмитируемых за эти несколько последних периодов
СрЭмЗаЕдКрияЗаРасчетныйПериод = СуммаВсехДенегПериода / 65536
(3b)где
СуммаВсехДенегПериода — Сумма всех денег эмитируемых за расчетный период
Повторюсь, что в начальный период существования системы формула расчета КоэфЭмиссии не будет работать. Поэтому, до момента в 65536 циклов КоэфЭмиссии нужно или принять постоянной величины (константа) равное, например, 1.00. Или же по другому рассчитывать значения средней эмиссии.
Коэффициент эмиссии учтет общий рост (или падение) и скорректирует общую эмиссию системы. Это добавит стабильности для системы в целом. Если эмиссия системы стала сильно большой, то этот коэффициент ограничит эмиссию и наоборот. Кроме этого, по сути, этот коэффициент показывает сложность получения новых денег.
Кол-во периодов для расчета коэффициента эмиссии нужно принять не сильно большое и не сильно маленькое. Я попытался смоделировать ситуации роста суммарного Крия в системе (когда создается много хороших проектов), ситуацию падения, ситуацию стагнации (когда проектов очень мало) и ситуацию бурного роста. Рассмотрел одинаковый вариант развития событий, но с разным кол-вом периодов для расчета значения СрЭмЗаЕдКрияЗаНесколькоПериодов (2 периода, 4 периода и 8 периодов). Результаты расчетов можно увидеть на графиках.
Коэффициент эмиссии несколько сглаживает общую эмиссию. А в периоды стагнации коэффициент эмиссии довольно значительно вырастет, что по идее, должно стимулировать авторов создавать новые проекты. И, как только кол-во проектов начнет расти (начнет увеличиваться суммарная Крия системы за цикл), то коэффициент эмиссии автоматически пересчитается.
Кроме этого, нужно предусмотреть следующую ситуацию. Если один из проектов будет с очень большой Крия, по сравнению с другими проектами, то это приведет к перекосу эмиссии в пользу одного этого проекта. И тогда появится возможность для монополизма. Чтобы такого перекоса не случалось предлагаю ограничить максимальную сумму эмиссии для одного проекта, например, как 1/16 часть от среднего значения эмиссии за последние несколько периодов.
Формула Крия проекта
Начисления Крия будут зависеть от коэффициентов локальных тематических сообществ. Поэтому формула станет более сложная и поэтому в формуле определения Крия стоит заменить параметр ОценкаПроекта на ЗначимостьПроекта. Где под «значимостью» понимается коэффициент действительной ценности этого проекта для общества в целом.
Формула для определения значения Крия получится такая:
КрияПроекта = ЗначимостьПроекта * СтоимостьПроекта
(4)Формула определения значимости проекта:
ЗначимостьПроекта = ОценкаПроекта * ЗначимостьСообщества
(5)где
ОценкаПроекта — это составная формула, которая зависит от мнения вкладчиков, от мнения экспертов и от мнения общества в целом.
ЗначимостьСообщества — это значимость сообщества, в котором состоит автор для общества в целом. Подробнее см. ниже.
Формула оценки проекта
Предлагаю такую формулу определения значения оценки проекта:
ОценкаПроекта = (ОценкаОтВкладчиков + ОценкаОтЭкспертов) / 2 + ОценкаОтОбщества
(6)При этом, вероятнее всего оценка от общества будет иметь значение близкое к нулю и мало будет влиять на расчет Крия. Однако, вероятно необходимо предусмотреть вето вкладчиков, вето экспертов и вето общества. (Спасибо за идею IrQ.)
Вето (от лат. veto — запрещаю) — право, означающее полномочие лица или группы лиц в одностороннем порядке заблокировать принятие того или иного решения.
Под вето я, здесь, понимаю запрет на прибавление положительного Крия автору и начисление эмисии. Например, если четверть всех вкладчиков или четверть всех экспертов или четверть всех проголосовавших пользователей системы проголосует против проекта, то блокировать право на эмиссию этому проекту. При этом тех, кто не голосовал вовсе можно не учитывать.
Оценка проекта от вкладчиков зависит от оценки и «веса» каждого вкладчика. Вес вкладчика определяется тем количеством денег, которое он вложил в проект. Оценка вкладчиков определяется как средняя оценка всех вкладчиков в соответствии с «весом» их вклада:
Формула определения значения оценки от вкладчиков будет такой:
ОценкаОтВкладчиков = Сумма(ОценкаВкладчика*ВзносВкладчика) / СуммаВзносов
(7)Вкладчики, по идее, должны получить результат вложенных денег и оценить этот результат. Если вкладчик остался доволен, то голосует +1, если не доволен, то голосует -1, по умолчанию 0.
Оценка экспертного сообщества зависит от оценки и от «веса» каждого эксперта. Вес эксперта (вес экспертного мнения) зависит от его Крия в данном сообществе. Пока я рассматриваю случай, что каждый пользователь состоит только в одном сообществе. Но, по идее (по модели), каждый пользователь одновременно может состоять в нескольких сообществах. Оценка экспертов определяется как средняя оценка всех членов сообщества в соответствии с их «весом» в сообществе.
Формула оценки от экспертов будет такой:
ОценкаОтЭкспертов = Сумма(ОценкаЭксперта*КрияЭксперта) / КрияСообщества
(8)где
КрияСообщества — сумма Крия всех экспертов в сообществе
При этом экспертам с одной стороны выгодно голосовать всегда положительно за проект, т.к. это приводит к увеличению Крия (и возможной эмиссии) автора проекта. Но с другой стороны это приводит к уменьшению их относительного веса внутри сообщества. Но если члены сообщества будут всегда голосовать только положительно, то это может отразиться на интересе общества в целом к конкретному тематическому сообществу.
Формула оценки от общества в целом будет такой:
ОценкаОтОбщества = Сумма(Оценка*Крия) / СуммаВсехКрияСистемы
(9)где
Оценка — это «голос» пользователя (+1, 0 или -1)
Крия — это суммарный Крия пользователя (сумма Крия всех его проектов)
СуммаВсехКрияСистемы — сумма всех Крия всех проектов всех пользователей системы
Формула значимости сообщества
Вес значимости сообщества (ценность локального тематического сообщества) определяется как доля интереса всего общества к определенной тематике:
ЗначимостьСообщества = ИнтересЛюдейКДаннойТематике / СуммаИнтересовВсегоОбществаКоВсемТематикам
(10a)Или, по другому, для определения значимости сообщества можно предложить такую формулу:
ЗначимостьСообщества = Оценки / (КолвоПользователейВСистеме * КолвоТематическихСообществ)
(10b)где
Оценки — сумма оценок от пользователей выставленные конкретному рассматриваемому сообществу
Каждый пользователь может выставить свою оценку для сообщества. Под оценкой здесь понимается некоторое значение от негативного (-1) до позитивного (+1) и по умолчанию имеет нейтральное значение (0). Это значение каждый пользователь может менять сколько угодно раз. При расчете будет учитываться только текущее значение оценки каждого пользователя. Таким образом, оценки пользователя будут отражать отношение этого пользователя к тем или иным тематическим сообществам.
Кроме того, каждый конкретный пользователь имеет свой «вес» в обществе и в сообществе.
Вес каждого пользователя в сообществе вычисляется следующим образом:
ВесПользователяВСообществе = КрияПользователяВСообществе / КрияСообщества
(11)где
КрияСообщества — сумма Крия всех членов сообщества
Напоминаю, если пользователь состоит в нескольких сообществах, то здесь учитываются только Крия этого сообщества. Но мы это пока не рассматриваем.
Вес пользователя в обществе вычисляется так:
ВесПользователяВОбществе = ВесПользователяВСообществе * ВесСообщества
(12a)или
ВесПользователяВОбществе = СуммарнаяКрияПользователя / СуммаВсехКрияВсехПроектовСистемы
(12b) Инвайты
Кроме всего прочего, для уменьшения вероятности мошенничества (и для повышения престижности каждого сообщества), необходимо сделать возможность добавления новых членов в сообщество только по инвайтам. При этом предполагается что инвайты будут образовываться у авторов проектов с положительной Крия. При достижении определенного значения Крия будет возможность пригласить нового пользователя.
В случает, если у пользователя Крия снизится ниже нуля, то никакого «сброса кармы» (Reset) не будет. Человеку придется заново выискивать того кто согласится подарить ему инвайт. Естественно информация об инвайтах, как и всех остальных операциях в системе, будет доступна всем. Так что можно будет однозначно определить кто и кому выдал инвайт. Если подопечный будет создавать плохие проекты, то это косвенно скажется на том кто выдал инвайт.
Проблема сговора с целью накруток
По хорошему, присекание накруток мошеннических проектов-пустышек будут осуществлять все пользователи системы минусуя проект. То есть общество, в идеале, должно само определить какой проект хороший, а какой плохой. Однако, для того, чтобы этот механизм работал в реальности обязательно требуется наличие понятий «сообщество», «эксперты», «вкладчики» и, соответственно, «вес сообщества», «вес эксперта», «вес вкладчика». Кроме того нужно установить минимальные и максимальные сроки сбора средств и реализации проекта и нужно установить срок от момента окончания голосования до момента эмиссии.
Минимальный и максимальный сроки сбора средств нужно ограничить для удобства использования. Например минимальный срок сбора средств задать равным 256 циклов (65536 секунд ~ 18 часов), а максимальный 42*256 циклов (2752512 секунд ~ 1 месяц).
Срок от момента окончания голосования до момента эмиссии нужен для того, чтобы у пользователей было время изменить свою оценку сообществу экспертов. Т.к. Крия и эмиссия зависят как от оценки экспертов, так их «веса», то в случае, если эксперты не адекватно оценили (завысили) результат выполнения проекта, то общество в целом будет иметь возможность «скорректировать» эту несправедливость изменением (в меньшую сторону) «веса» сообщества экспертов. Например, срок от момента окончания голосования до момента эмиссии можно задать равным 65536 циклам (~194 дня). Это должно стимулировать авторов выполнять свою работу максимально качественно.
Проблема автономного функционирования изолированной подсети
При изоляции части сети внутри локальной области остается возможность проведения транзакций (с последующим слиянием данных разных подсетей). И даже можно заложить возможность параллельной эмиссии в локальных подсетях с последующим слиянием и пересчетом. Это можно реализовать, если деньги за проекты эмитировать не сразу, а через некоторый промежуток времени, в течение которого возможно произвести слияние с пересчетом эмитируемых средств по каждому конкретному проекту. Например, можно эмиссию после окончания голосования производить через 16*256 циклов (что соответствует промежутку примерно в 12 дней). За это время, наверняка, получится восстановить связь между отдельными подсетями и произвести синхронизацию.
Даже в случае полной блокировки какой-либо отдельной страны от остального мира за 12 дней можно данные переправить на флешках, с помощью беспилотника и т.п. Такая платежная система, теоретически, даже сможет работать не только в пределах планеты Земля, но и на других соседних планетах.
Правда остается вероятность одновременной передачи денег с одного кошелька в разных подсетях, что вызовет коллизию при синхронизации (слиянии). Чтобы размеры таких двойных одновременных оплат в разных подсетях не был сильно большим, как вариант, можно предложить для разных сумм транзакций назначать разное время подтверждения. Например, при передаче суммы до 1000 единиц принимать срок подтверждения создания блока (256 сек), при передаче суммы до 1000000 единиц принимать срок подтверждения 16 циклов (~1 час), при передаче суммы до 1000000000 единиц принимать срок подтверждения 256 циклов (~18 часов), при передаче суммы более 1000000000 единиц принимать срок подтверждения 16*256 циклов (~12 дней). А для «микроплатежей» можно не дожидаться подтверждения транзакции в блоке, а достаточно запросить подтверждения у нескольких ближайших узлов. При современных скоростях интернета такой опрос вероятно займет не более нескольких секунд. Но над этим всем надо будет еще подумать.
Проблема offline-платежей
В комментариях к предыдущей части был вопрос про возможность оплаты offline. Я ответил, что это в системе не предусмотрено. Однако, можно предложить следующую технологию условно-offline электронных денег. Для реализации оплаты, без доступа к своему «кошельку» предлагаю ввести понятие «монета». Под «монетой» здесь понимается некоторый файл, который создается владельцем кошелька. Каждая «монета» выпускается с определенным номиналом. В момент создания этой монеты в системе создается специальная транзакция — передача денег от пользователя на создание «монеты». Со счета пользователя эти деньги списываются. Во время создания монеты будет сгенерирована пара ПубличныйКлюч+СекретныйКлюч. В транзакции будет указан номер публичного ключа, а в файле «монеты» будет содержаться секретный ключ.
Оплата условно-offline будет происходить следующим образом:
Этапы offline платежа:
1) Плательщик (допустим покупатель) передает файл «монеты» продавцу offline.
2) Продавец получает файл и ищет запись транзакции создания этой монеты.
3) Если такая транзакция существует, то продавец далее осуществляет проверку — ищет транзакцию уничтожения монеты.
4) Если транзакции уничтожения не было, значит все хорошо и такую монету можно принять к оплате.
Этапы, требующие online подключения:
5) Далее держатель монеты (продавец) должен «обезналичить» полученную монету. Для этого он создает специальную транзакцию в которой указывает какую монету он обезналичивает и указывает секретный ключ этой монеты.
* Более лучшего слова, кроме как «обезналичить», я не смог найти. Подскажите пожалуйста подходящее название?
Таким образом другие пользователи системы могут убедится, что монета действительно находится у того кто ее «обезналичивает». Транзакция уничтожения монеты допускается только один раз. Если покупатель-мошенник смог расплатится одной монетой два раза, то деньги получит только тот продавец, который первый создаст транзакцию уничтожения монеты.
Для уменьшения возможности мошенничества необходимо ограничить номинал одной монеты. Кроме того, чтобы монеты не создавались в огромных количествах необходимо ввести некоторую комиссию за создание монеты (например при создании монеты номиналом 100.00 единиц нужно будет создать транзакцию на 100.01 единицу денег). А так же нужно установить максимальный срок от момента создания монеты до момента ее уничтожения. Если монета в заданный срок не уничтожится (не будет создано соответствующей транзакции), то такая монета будет считаться потерянной и деньги за нее не возвращаются.
Проблема «распухания» базы данных
База транзакций, проектов и их оценок будет увеличиваться очень быстро. Чтобы минимизировать нагрузку можно заложить в систему оплату каждой транзакции и каждого голоса (предусмотреть самую минимальную стоимость, которую вычитать при транцакции). Например отправитель передает 1000.01 единиц, а получатель получит только 1000.00 единиц денег. Это решение выступает в роли «налога» за обеспечение хранения транзакций другими участниками (при ликвидации одной единицы денег автоматически стоимость оставшихся чуть возрастает).
Кстати, вероятно вместо того, чтобы каждому держать на своем компьютере клиент для такой системы, гораздо проще и выгоднее будет отдавать свои «деньги» в доверительное управление и работать с системой через Web-формы. Как это сейчас практикуется с Bitcoin.
Кроме этого можно в системе предусмотреть пересоздание базы данных через определенные периоды времени. При этом в новую базу будут копироваться только актуальные транзакции, а все промежуточные останутся в архивной базе данных. После проверки и подтверждения правильности новых транзакций, данные новой базы будут считаться такими же достоверными. И для вновь подключившимся пользователям не придется скачивать историю всех транзакций проведенных за всё время существования системы.
Проблема «плохих» авторов
Для того чтобы отличать плохих авторов от хороших у каждого будет свой «рейтинг» в виде значения Крия, которое показывает на сколько хорошо были выполнены предыдущие проекты этого автора. Для отфильтровывания плохих авторов можно при отрицательном значении Крия запрещать создание новых проектов.
В этом случае человек сможет заново зарегистрироваться в системе, присоединиться к тому или иному сообществу как-то получив инвайт. И, таким образом, сможет начать карьеру «с чистого листа».
Проблема анонимности/не анонимности
Каждый пользователь системы может оставаться анонимным, если не будет раскрывать своих личных данных и будет использовать I2P и т.п. каналы передачи данных. В любом случае, узнать точное кол-во денег у того или иного пользователя будет довольно сложно, т.к. при каждой транзакции создаются новые пары ключей (публичный и секретный) — так же, как это реализовано в системе Bitcoin. То есть, по сути, как такового кошелька с единым счетом у пользователя не существует. Вместо этого в кошельке хранится лишь информация о транзакциях, хеши которых были сгенерированы для этого пользователя и которыми он может распоряжаться. При этом у каждого человека может быть несколько кошельков. В этом случае определить сколько денег есть в наличие у конкретного человека становится крайне затруднительно.
Дополнительные возможности
Систему можно применять не только для осуществления платежей и создания крауд-проектов. Но можно использовать такую систему для оценки ценности OpenSource-проектов, а так же для фриланс-проектов.
Для оценки ценности OpenSource проектов предлагаю следующее. Для OpenSource проекта создавать проект с максимальным сроком сбора средств, с минимальной суммой вклада в проект и с нулевым сроком выполнения проекта. Таким образом вкладчики будут осуществлять Donate (поддерживать) проект. После завершения сбора средств сразу будет идти этап оценки проекта. А по результатам оценки автору проекта будут начисляться Крия и эмиссия (при положительном значении Крия). После завершения этого проекта, при желании, автор OpenSource-проекта может создать следующий проект по сбору средств.
Для реализации фриланс-проектов можно предложить следующую схему.
1) Заказчик создает задание и подыскивает Исполнителя на какой-либо фриланс-площадке.
2) Далее, Исполнитель создает проект в системе, где максимально четко прописывает ТЗ, стоимость и пр.
3) После того, как проект создан, Заказчик его полностью оплачивает.
4) Далее идет этап выполнения проекта.
5) По результатам выполнения работы этот проект оценивает как Заказчик, так и эксперты и общество в целом.
6) За тем производится начисление Крия и, если проект оценён положительно, то создается эмиссия в пользу Исполнителя.
Здесь описана работа по 100% предоплате. Если Исполнитель не выполнит работу или выполнит ее не качественно, то поплатится своим уровнем Крия. Кроме того, в системе доступна вся история проектов (как портфолио). Поэтому, даже если Крия у Исполнителя будет положительная, но история подпорчена, то такой Исполнитель уже не будет вызывать доверия.
Пример
Допустим Пользователь0 успешно работал над проектом программы для смартфонов за 300 единиц денег. При этом многим людям не связанных с данной темой было интересно увидеть результат — это и является ценностью общества к деятельности локального сообщества. При этом некоторые решают вложиться в проект.
Допустим существует три сообщества: СоздателиПрограммДляСмартфонов (1), СоздателиТабуреток (2), СоздателиМузыкальныхПроизведений (3).
Пользователь0 ведет разработку как член сообщества СоздателиПрограммДляСмартфонов.
Допустим есть еще шесть пользователей (каждый из них состоит в своем сообществе) с такими Крия:
Пользователь11 — СообществоСоздателейПрограммДляСмартфонов (1)
Пользователь12 — СообществоСоздателейПрограммДляСмартфонов (1)
Пользователь13 — СообществоСоздателейПрограммДляСмартфонов (1)
Пользователь21 — СообществоСоздателейМузыкальныхПроизведений (2)
Пользователь22 — СообществоСоздателейМузыкальныхПроизведений (2)
Пользователь23 — СообществоСоздателейМузыкальныхПроизведений (2)
Пользователь31 — СообществоСоздателейТабуреток (3)
Пользователь32 — СообществоСоздателейТабуреток (3)
Пользователь33 — СообществоСоздателейТабуреток (3)
Предположим у пользователей такие значения Крия:
КрияПользователя11 1000
КрияПользователя12 2000
КрияПользователя13 3000
КрияПользователя21 4000
КрияПользователя22 5000
КрияПользователя23 6000
КрияПользователя31 7000
КрияПользователя32 8000
КрияПользователя33 9000
При этом у одного реального человека может быть зарегистрировано несколько аккаунтов (в разных сообществах), но мы пока это не учитываем. Отмечу так же, что для вступления в каждое сообщество нужно получать инвайт от члена этого сообщества.
Таким образом сумма Крия в сообществах будет такой:
СуммаКрияСоздателейПрограммДляСмартфонов = 1000 + 2000 + 3000 = 6000
СуммаКрияСоздателейТабуреток = 4000 + 5000 + 6000 = 15000
СуммаКрияСоздателейМузыкальныхПроизведений = 7000 + 8000 + 9000 = 24000
Тогда вес каждого пользователя в сообществе будет таким:
ВесПользователя11 = 1000 / 6000 = 0.167
ВесПользователя12 = 2000 / 6000 = 0.333
ВесПользователя13 = 3000 / 6000 = 0.500
ВесПользователя21 = 4000 / 15000 = 0.267
ВесПользователя22 = 5000 / 15000 = 0.333
ВесПользователя23 = 6000 / 15000 = 0.400
ВесПользователя31 = 7000 / 24000 = 0.292
ВесПользователя32 = 8000 / 24000 = 0.333
ВесПользователя33 = 9000 / 24000 = 0.375
Допустим, что каждый из пользователей вкладывает средства на реализацию проекта создания программы для смартфона следующие суммы:
Пользователь0 — 90 единиц
Пользователь11 — 60 единиц
Пользователь12 — 50 единиц
Пользователь21 — 40 единиц
Пользователь22 — 30 единиц
Пользователь31 — 20 единиц
Пользователь32 — 10 единиц
ОбщаяСумма = 300 единиц денег
Как можно заметить Пользователь0 вкладывает свои же средства в свой собственный проект. Это не запрещено.
Допустим вкладчики так оценили проект создания программы для смартфона:
Пользователь11 +1
Пользователь12 -1
Пользователь21 +1
Пользователь22 0
Пользователь31 +1
Пользователь32 -1
Пользователь13, Пользователь23 и Пользователь33 не вкладывались в проект и не участвуют в голосовании. И Пользователь0, естественно, тоже не участвует в голосовании.
Тогда, для нашего примера оценка вкладчиков составит следующую величину (формула 7):
ОценкаОтВкладчиков = (+1*60 -1*50 +1*40 +0*30 +1*20 -1*10) / 300 = +0.20
Допустим эксперты (члены сообщества СоздателиПрограммДляСмартфонов) так оценили проект:
Пользователь11 +1
Пользователь12 -1
Пользователь13 +1
Тогда, для нашего примера оценка экспертов составит следующую величину (формула 8):
ОценкаОтЭкспертов = (+1*0.167 -1*0.333 +1*0.500) / 3 = +0,33
Допустим пользователи, не являющиеся ни экспертами, ни вкладчиками оценили проект так:
Пользователь23 +1
Пользователь33 -1
Тогда оценка общества в целом составит (формула 9) (в этой формуле, учитываются все пользователи, даже если они являются вкладчиками и/или экспертами):
ОценкаОтОбщества = (+1*1000 -1*2000 +1*3000 +1*4000 +0*5000 +1*6000 +1*7000 -1*8000 -1*9000) / 45000 = +0.13
Тогда, оценка проекта для нашего примера составит (формула 6):
ОценкаПроекта = (+0.20 +0.33)/2 +0.13 = +0.40
Допустим вес сообщества СоздателиПрограммДляСмартфонов равен 0.300
Тогда значимость проекта будет такой (формула 5):
ЗначимостьПроекта = +0.40*0.300 = +0.120
Ценность проекта (КрияПроекта) будет такой:
КрияПроекта = +0.120*300 = +36 > 0 => Эмиссия
Допустим коэффициент эмиссии в данный момент равен:
КоэфЭмисии = 1.1
Тогда эмиссия новых денег составит (дробные значения отбрасываются):
Эмиссия = 1.1*36 = 39 единиц денег
Еще раз про ценности
Кроме всего написанного выше хочу еще раз сказать, что ценность определяется готовностью других людей вкладывать деньги в интересующий их проект. А интерес к проекту зависит от надежности автора, надежности сообщества в котором состоит автор и от запрашиваемой суммы. При этом каждый человек при оплате соизмеряет стоимость какую выставляет автор проекта с оплатой которую заработал сам человек.
Например, если некто создал проект надувания воздушных шариков за 1000 единиц денег, а ранее я целый месяц делали программу за 2000 единиц денег, то вкладываться в надувание шариков за такую стоимость я точно не буду.
UI Design
В конце статьи я бы хочу привести вариант UI будущей программы. Прошу не судить строго.
Ссылки
Хорошая статья со статистикой успешности «народных складчин»:
И опять краудфандинг: сегодня по-американски
P.S. Мне бы хотелось определить на сколько интересна Хабрасообществу предложенная идея. Для этого предлагаю более расширенное голосование, чем просто отмечать +1 или -1.
Only registered users can participate in poll. Log in, please.
Как вы относитесь к описанной идее
16% Меня вообще не интересует тема альтернативных денег8
36% Альтернативные деньги — это интересно, но все, что здесь описано — это полная ерунда18
12% Тема интересна, но описана слишком плохо (сложно понять что именно хочет автор статьи и т.п.)6
10% Тема интересна и идея вроде бы нормальная, но чего-то не хватает5
12% Тема денег интересная и идея достаточно здравая, когда будет реализована — тогда посмотрим6
12% Идея интересная и мне с нетерпением хочется увидеть реализацию6
2% Другое (напишу комментарий)1
50 users voted. 16 users abstained.