Что такое Hard Cap в ICO

CAP теорема

Эта теорема была представлена на симпозиуме по принципам распределенных вычислений в 2000 году Эриком Брюером. В 2002 году Сет Гилберт и Нэнси Линч из MIT опубликовали формальное доказательство гипотезы Брюера, сделав ее теоремой. По словам Брюера, он хотел, чтобы сообщество начало дискуссию о компромиссах в распределённых системах и уже спустя некоторое количество лет начал вносить в неё поправки и оговорки.

Что стоит за CAP

В CAP говорится, что в распределенной системе возможно выбрать только 2 из 3-х свойств:

  • C (consistency) — согласованность. Каждое чтение даст вам самую последнюю запись.
  • A (availability) — доступность. Каждый узел (не упавший) всегда успешно выполняет запросы (на чтение и запись).
  • P (partition tolerance) — устойчивость к распределению. Даже если между узлами нет связи, они продолжают работать независимо друг от друга.

Уже есть достаточно наглядных доказательств этой теоремы, поэтому дам ссылки на университет Баумана и доказательство в виде сервиса «Позвони, напомню!».

В основном это всё треугольник

Многие статьи сводятся к вот такому вот простому треугольнику.

Hard Cap в ICO. Особенности

На современном криптовалютном рынке под термином «Hard Cap» принято подразумевать объем инвестиционного капитала, который необходим для воплощения в жизнь всех идей разработчиков нового проекта. Эта сумма предполагает как привлечение высококвалифицированных профессионалов в различных областях, так и снабжение новой платформы целым рядом дополнительных функций и т.д.

Кроме того, в эту сумму включаются и денежные средства, которые можно будет потратить на дальнейшее развитие нового проекта как в краткосрочной, так и в долгосрочной перспективе.

Также следует упомянуть такой термин, как «Soft Cap». Под этим термином подразумевается объем инвестиционного капитала, которого будет достаточно для запуска основных составляющих нового блокчейн-проекта. Эта сумма обычно применяется для запуска блокчейн-платформы, а также дополнительных элементов, без которых невозможно ее полноценное функционирование. Таким образом, Soft Cap является минимальной суммой денежных средств, необходимых для запуска нового децентрализованного проекта.

На современном рынке ICO проекты, для которых установлены Hard Cap и Soft Cap, принято называть «Capped ICO». Если разработчики не устанавливают эти суммы для собственного проекта, то их детище называют «Non-Cap ICO».

Применяем на практике

Для применения CAP теоремы на практике, я выбрал 3 наиболее, на мой взгляд, подходящие и достаточно популярные системы баз данных: Postgresql, MongoDB, Cassandra.

Посмотрим на Postgresql

Следующие пункты относятся к абстрактной распределенной БД Postgresql.

  • Репликация Master-Slave — одно из распространенных решений
  • Синхронизация с Master в асинхронном / синхронном режиме
  • Система транзакций использует двухфазный коммит для обеспечения consistency
  • Если возникает partition, вы не можете взаимодейстовать с системой (в основном случае)

Таким образом, система не может продолжать работу в случае partition, но обеспечивает strong consistency и availability. Это система CA!

Посмотрим на MongoDB

Следующие пункты относятся к абстрактной распределенной БД MongoDB.

  • MongoDB обеспечивает strong consistency, потому что это система с одним Master узлом, и все записи идут по умолчанию в него.
  • Автоматическая смена мастера, в случае отделения его от остальных узлов.
  • В случае разделения сети, система прекратит принимать записи до тех пор, пока не убедится, что может безопасно завершить их.

Таким образом, система может продолжать работу в случае разделения сети, но теряется CAP-availability всех узлов. Это CP система!

Посмотрим на Cassandra

Cassandra использует схему репликации master-master, что фактически означает AP систему, в которой разделение сети приводит к самодостаточному функционированию всех узлов.
Казалось бы всё просто… Но это не так.

CCXProcess — что это такое?

Процесс принадлежит программе Adobe Creative Cloud Experience. Данное ПО — фирменное облако а также веб-установщик софта Adobe:


Из этой программы можно установить демо-версии разного софта Adobe.

Но есть одно НО — CCXProcess принадлежит именно к Adobe Creative Cloud Experience, последнее слово в названии означает опыт. Возможно данный процесс занимается сбором и отправкой анонимной статистики об использовании ПО. Ведь если использовать фаервол — можно заметить что CCXProcess устанавливает соединение с интернетом.

Запускается из папки:

C:Program Files (x86)AdobeAdobe Creative CloudCCXProcess

Процесс способен грузить процессор (это касается и CCLibrary):

Если процесс завершить — автоматом запустится заново.

На форуме Adobe как решение предлагают переустановить Creative Cloud.

Один пользователь решил проблему путем создания новой учетной записи, в которой такой нагрузки уже не было.

В сети нашел следующий путь:

C:Program Files (x86)AdobeAdobe Creative CloudCCXProcessjsnode_modulesnode-vulcanjsbuildReleaseVulcanJS.node

Здесь видим:

  • js — скорее всего значит яваскрипт.
  • VulcanJS.node — снова JS, а node это серверная платформа для работы с JavaScript через движок V8.

Поэтому возможно:

  • Creative Cloud может работать используя веб-технологии, для поддержки которых используется CCXProcess.

Проблемы CAP

На тему проблем в CAP теореме написано множество подробных и интересных статей, здесь, на Хабре, поэтому я оставлю ссылку на CAP больше не актуален и мифы о CAP теореме. Обязательно почитайте их, но относитесь к каждой статье, как к своего рода новому взгляду и не принимайте слишком близко к сердцу, потому что одни ругают, другие хвалят. Сам же я не буду слишком углублятся, а постараюсь выдать некоторую необходимую компиляцию.
Итак, проблемы CAP теоремы:

  • Далёкие от реального мира определения
  • В рамках разработки, выбор в основном лежит между CP и AP
  • Множество систем — просто P
  • Чистые AP и CP системы могут быть не тем, что ожидаешь

Что не так с определениями?

Consistency в CAP фактически означает линеаризуемость (и ее действительно трудно достичь). Чтобы объяснить, что такое линеаризуемость, давайте посмотрим на следующую картинку:

В описанном случае рефери закончил игру, но не каждый клиент получает один и тот же результат. Чтобы сделать его систему линеаризованной, нам нужно мгновенно синхронизировать данные между рефери и другими источниками данных, чтобы, когда рефери закончит игру, каждый клиент получил правильную информацию.

Availability в CAP, исходя из определения имеет две серьёзные проблемы. Первая — нет понятия частичной доступности, или какой-то её степени (проценты например), а есть только полная доступность. Вторая проблема — неограниченное время ответа на запросы, т.е. даже если система отвечает час, она всё ещё доступна.

Устойчивость к распределению не включает в себя упавшие узлы, и вот почему:

  1. По определению. В availability так и прописано «…every node (if not failed) always…»
  2. Исходя из доказательства. Доказательства CAP теоремы гласят что на узлах должен исполняться некоторый код.
  3. Ну и немного моих (и не только) домыслов. В случае падения узла, система может восстановиться, пообщаться с другими узлами и продолжить работу как ни в чем ни бывало. В случае разделения сети — придётся ждать восстановления соединения.

Поэтому, нужно помнить про способность системы восстанавливаться, но за рамками CAP теоремы.

AP / CP выбор

Коммуникация узлов между собой обычно происходит через асинхронную сеть, которая может задерживать или удалять сообщения. Интернет и все наши центры обработки данных обладают этим свойством, и это не маловероятные инциденты, поэтому CA системы в рамках разработки рассматриваются крайне редко.

Многие системы — просто P

Представьте систему, в которой два узла (Master, Slave) и клиент. Если вдруг вы потеряли связь с Master, клиент может читать из Slave, но не может писать — нет CAP-availability.
Ок, вроде CP система, но если Master и Slave синхронизируются асинхронно, то клиент, может запросить данные от Slave раньше успешной синхронизации — теряем CAP-consistency.

Чистые AP и CP системы

Чистые AP системы, могут включать в себя просто 2 генератора чисел. Чистые CP системы, могут вообще не быть доступны, т.к. буду пытаться придти к согласованному состоянию и не будут нам отвечать. Идём дальше, CP системы дают нам не ожидаемый нами strong consistency, а eventual consistency. О нём поговорим чуть позже.

Значение слова cap

CAP Märkte (с нем. «магазины CAP») — немецкая торговая марка , социальная франшиза и сеть супермаркетов в формате «у дома», в которых работают в основном инвалиды .

Каждый магазин CAP обычно находится в ведении местной ассоциации инвалидов, но бренд принадлежит общему благотворительному кооперативу мастерских инвалидов GDW Süd — Genossenschaft der Werkstatten für behinderte Menschen Süd eG, расположенному в Баден-Вюртемберге ( Бавария ).

Магазины CAP обычно открываются в заброшенных или пустующих торговых помещениях, стремясь предоставить достойные условия труда для инвалидов, особенно малоподвижных, и обеспечить приветливое обслуживание.

Первый магазин будущей сети CAP открылся в Зиндельфингене возле Штутгарта в 1999 году.

Название сети образовалось от слова handiCAPed — гандикап, которое в медицине и психологии означает сочетание физических, умственных, психологических и/или социальных качеств или процессов, которое затрудняет приспособление человека, не позволяя ему достичь оптимального уровня развития и функционирования.

Используя принцип социального франчайзинга сеть неуклонно росла, достигнув к 2011 году 90 магазинов по всей Германии, которые предоставляли более 1 200 рабочих мест, включая более 650 — инвалидам.

Договор франшизы предоставляет классическую поддержку для новых магазинов:

  • Консультационное обслуживание .
  • Постоянную маркетинговую и рекламную поддержку.
  • Развитие корпоративного дизайна.
  • Поддержку клиентов магазинов.
  • Обмен опытом.
  • Следование принципу: общие покупатели — большие выгоды.

Каждый магазин сети платит за франшизу 0,6 % от оборота.

Магазины CAP стремятся не только предоставлять работу инвалидам, но и решать другие социальные задачи, например, предоставлять доступ к основным продуктам питания в нескольких минутах ходьбы от дома людям, которые по состоянию здоровья вынуждены вести малоподвижный образ жизнь. В плане решения этой стратегии магазины предоставляют доставку продуктов на дом и почтовые услуги.

Развивая сеть «магазинов у дома» CAP пытается снизить необходимость использования автомобилей, декларируя стремления решить экологические задачи.

В магазинах CAP декларируется забота об оживлении местных экономик, путём создания локального денежного оборота.

Магазины CAP пытаются добиться синергетического эффекта, связывая различные составляющие социальной экономики — бренд принадлежит кооперативу инвалидов, магазины управляются местными ассоциациями нетрудоспособных, товары поступают от организаций людей с ограниченными возможностями, рабочие места в них предоставляются инвалидам, покупателями являются, в том числе, местные малоподвижные жители, включая пожилых людей.

Эксперты отмечают возможность для роста сети, востребованной как обществом, так и со стороны местных властей. Германские и европейские власти, а также эксперты в научных кругах, оказывают широкую информационную и лоббистскую поддержку бизнес-модели CAP, представляя её в числе лучших образцов социального бизнеса и успешных примеров для масштабирования.

Как с этим жить

В конце концов, это всего лишь попытка классифицировать что-то абстрактное, поэтому вам не нужно изобретать велосипед. Я рекомендую использовать следующий подход при попытке работать с распределенными БД:

  • Помните об определениях CAP и об их ограничениях.
  • Используйте теорему PACELC вместо CAP, она позволяет взглянуть на систему ещё с одного ракурса.
  • Помните про принципы ACID / BASE и насколько они применимы к вашей системе.
  • Любые телодвижения следует делать, учитывая проект, над которым вы работаете.

PACELC

Теорема PACELC была впервые описана и формализована Даниелом Дж. Абади из Йельского университета в 2012 году. Поскольку теорема PACELC основана на CAP, она также использует его определения.
Вся теорема сводится к IF P -&gt, (C or A), ELSE (C or L).

Latency — это время, за которое клиент получит ответ и которое регулируется каким-либо уровнем consistency. Latency (задержка), в некотором смысле представляет собой степень доступности.

Немного о BASE

BASE — это своеобразный контраст ACID, который говорит нам, что истинная согласованность не может быть достигнута в реальном мире и не может быть смоделирована в высокомасштабируемых системах.
Что стоит за BASE:

  • Basic Availability. Система отвечает на любой запрос, но этот ответ может быть содержать ошибку или несогласованные данные.
  • Soft-state. Состояние системы может меняться со временем из-за изменений конечной согласованности.
  • Eventual consistency (конечная согласованность). Система, в конечном итоге, станет согласованной. Она будет продолжать принимать данные и не будет проверять каждую транзакцию на согласованность.

Меня несколько раз спрашивали о том, что лучше ACID или BASE — это зависит от вашего проекта. Например, если ваши данные не критичны, и пользователь действительно заботится о скорости взаимодействия, BASE будет лучшим вариантом. Если всё наоборот — ACID поможет вам сделать систему максимально надежной с точки зрения данных.

Всем счастливого Дня Благодарения. Давайте немного поговорим о легендарных предметах.

С момента выхода Legion мы намеренно не делились с вами информацией о том, как работает система их получения, поскольку лучшая вещь, которую вы можете сделать для этого просто сводится к «играйте в игру и занимайтесь вещами для игроков максимального уровня, которые нравятся вам больше всего». Они должны были стать универсальной дополнительной наградой, которая иногда может значительно увеличить силу персонажа, вдобавок к понятной и вездесущей системе артефактов, а также обычным системам получения вещей. Очевидно, что, сидя здесь и читая предположения о том, что, может быть, лучше стоит удалять нежеланные легендарные предметы, чтобы увеличить шансы на получение дополнительных вещей, мы получили урок и поняли, каким оказался такой подход (P.S.: не удаляйте свои легендарные предметы, система смотрит на историю полученных вами вещей, а не на те, которые у вас есть сейчас.)

В своем дизайне мы также были очень консервативны, планируя слегка отпустить вожжи, когда придет время. С системой такого масштаба, что охватывает все виды занятий на максимальном уровне, мы не могли быть уверены, получилось ли нам правильно ее сбалансировать, на основании данных, полученных от игроков, которые играли лишь несколько часов в неделю во время бета-тестирования, неизбежно они стали бы отличаться от живой версии игры с миллионами людей, играющих более целенаправленно. Также мы понимали, что, из-за ошибки в этой системе, легендарные предметы стали бы слишком обыденными и в конечном итоге мы бы легко добрались до таких ситуаций, в которых некоторые люди (либо большие везунчики, либо те, кто очень много играет) оказались просто завалены ими. Случись это, стало бы очень плохо, — у части игроков все сумки были бы наполнены легендарными предметами, и многие месяцы им бы не приходилось ожидать сюрпризов. Если бы после этого мы попытались исправить проблему, то все те, кто не получил преимущество во время этого щедрого периода, стали бы чувствовать себя отставшими навсегда. :cut:

Поэтому, мы начали с менее щедрого подхода, поскольку, если бы и в этом случае была совершена ошибка, то ее можно было гораздо легче исправить. (Мы увеличили общие шансы получения легендарных предметов в обновлении 7.1.) Мы также приняли некоторые меры, чтобы уменьшить разрыв между самыми удачливыми и неудачливыми людьми. Удача является неотрывным фактором онлайн игр, таких, как эта, но, если бы мы полностью положились на волю случая и оставили это без внимания, то неизбежно появились бы некоторые люди, что играют по нескольку часов в неделю и буквально ниразу не видели ни одного легендарного предмета. По этой причине была введена так называемая «защита от неудачи», которая немного повышает ваши шансы каждый раз, когда вы могли бы получить легендарный предмет, но этого не происходит.

Как следует из названия, система «защиты от неудачи» служит для защиты неудачливых игроков от жестокой воли случая. А тем, к кому удача повернулась лицом, не нужна такая система, поскольку она просто сделала бы их лучше всех в мире — полагали мы. Поэтому мы провели черту у 4 легендарных предметов, изначально планируя поднять ее, когда придет время. Получив 4 предмета, вы все еще можете получить и новые, но невидимая длань «защиты от неудачи» больше не будет вам помогать. С большой уверенностью можно сказать, если, скажем, в начале октября, у вас было 4 легендарных предмета, то вы очень удачливы и вам не нужна помощь в получении дополнительных.

Однако, мы совсем не ожидали, что некоторые целеустремленные люди будут играть очень много, пусть большей частью ради силы артефакта. В середине ноября нам стали задавать вопросы о своего рода ограничении на 4 легендарных предмета и тогда мы поняли, что есть определенная группа игроков, которая играет очень много и теперь считает, что максимальное количество получаемых легендарных предметов ограничено 4. (Обратите внимание, что это весьма малочисленная группа. Такие игроки встречаются довольно часто в подобных обсуждениях, поскольку проблема касается именно их, но речь идет о тысячах людей из миллионов.)

Поэтому неделю назад мы сняли это ограничение. «Защита от неудачи» теперь действует всегда. Большинство людей из этой группы, вероятно, на этой неделе штурмовали эпохальное Испытание Доблести, и, поскольку смерти на рейдовых боссах во время освоения, к сожалению, не приносят легендарные предметы, у них просто не было возможности оценить эффекты изменения. Если когда-то наступит момент, когда такие игроки получат все легендарные предметы для своей специализации, то так тому и быть. Они определенно этого заслужили, а в будущих обновлениях появятся новые легендарные вещи. Ограничение на максимальное количество одновременно экипированных предметов позволит сохранить разрыв между разными игрокам в разумных пределах, а мы продолжим балансировать эффективность некоторых легендарных предметов (эти изменения произойдут в обновлении 7.1.5), чтобы те оставались интересными, но не влияли на игру слишком сильно.

Свежий взгляд

Теперь, когда мы знаем о большинстве подводных камней, давайте попробуем рассмотреть те же самые популярные системы баз данных через призму полученных знаний.

Postgresql

Postgresql действительно допускает множество различных конфигураций системы, поэтому их очень сложно описать. Давайте просто возьмем классическую Master-Slave репликацию с реализацией через Slony.

  • Система работает в соответствии с ACID (существует пара проблем с двухфазным коммитом, но это вне рамок статьи).
  • В случае разрыва связи, Slony попытается переключиться на новый Master, и у нас есть новый мастер с его согласованностью.
  • Когда система функционирует в нормальном режиме, Slony делает все, чтобы достичь strong consistency. На самом деле, ACID — причина большой задержки в этой системе.
  • Классификация системы — PC / EC (A).

MongoDB

Давайте узнаем что-то новое о MongoDB:

  • Это ACID в ограниченном смысле на уровне документа.
  • В случае распределенной системы — it’s all about that BASE.
  • В случае отсутствия разделений сети, система гарантирует, что чтение и запись будут согласованными.
  • Если Master узел упадёт или потеряет связь с остальной системой, некоторые данные не будут реплицированы. Система выберет нового мастера, чтобы оставаться доступной для чтения и записи. (Новый мастер и старый мастер несогласованы).
  • Система рассматривается как PA / EC (A), так как большинство узлов остаются CAP-available в случае разрыва. Помните, что в CAP MongoDB обычно рассматривается как CP. Создателль PACELC, Даниэль Дж. Абади, говорит, что существует гораздо больше проблем с согласованностью, чем с доступностью, поэтому PA.

Cassandra

  • Предназначена для «скоростного» взаимодействия (low-latency interactions).
  • ACID на уровне записи.
  • В случае распределенной системы — it’s all about that BASE.
  • Если возникает разрыв связи, остальные узлы продолжают функционировать.
  • В случае нормального функционирования — система использует уровни согласованности для уменьшения задержки.
  • Система рассматривается как PA / EL (A).

Выводы

  • Компромиссы распределённых систем — это то, с чего стоит начинать процесс проектирования.
  • Достаточно трудно классифицировать абстрактную систему, гораздо лучше сначала сформировать требования исходя из технического задания, а уже затем правильно сконфигурировать нужную систему баз данных.
  • Не перетруждайтесь, мы ведь просто любопытные разработчики, если в чем-то есть сомнения — обратитесь к эксперту.

Спасибо за внимание!
Полезные источники

dzone.com/articles/better-explaining-cap-theorem blog.thislongrun.com/2015/03/the-confusing-cap-and-acid-wording.html neo4j.com/blog/acid-vs-base-consistency-models-explained databases.about.com/od/databasetraining/a/databasesbegin.htm brooker.co.za/blog/2014/07/16/pacelc.html www.postgresql.org/files/developer/transactions.pdf www.airpair.com/postgresql/posts/sql-vs-nosql-ko-postgres-vs-mongo jennyxiaozhang.com/nosql-hbase-vs-cassandra-vs-mongodb blog.thislongrun.com/2015/04/the-unclear-cp-vs-ca-case-in-cap.html www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed cs-www.cs.yale.edu/homes/dna/papers/abadi-pacelc.pdf blog.thislongrun.com/2015/03/dead-nodes-dont-bite.html queue.acm.org/detail.cfm?id=2462076


Понравилась статья? Поделиться с друзьями:
Добавить комментарий