Об ICO от разработчиков смарт контрактов

Суть технологии

В 2017 году блокчейн завоевал умы не только разработчиков, занимающихся этой технологией уже несколько лет, но и предпринимателей, инвесторов и широкой общественности. Популярность технологии основана на понимании нового способа взаимодействия людей: она позволяет исключить третью сторону – регулятора, и масштабность этого способа сложно переоценить. До сих пор ведь было как: встречаются два человека в поле и соглашаются об обмене двух коров на десять бушелей пшеницы, один из которых при этом должен быть передан в качестве предоплаты. В этом месте возникает необходимость зафиксировать как намерение, так и факт передачи части зерна, что должна сделать некоторая третья, независимая от участников сделки, сторона. В силу человеческого фактора существующее решение этой проблемы обходится обществу достаточно дорого, и люди вынуждены содержать большой штат государственных служащих, занимающихся верификацией действий граждан и разрешением возникающих споров. А еще тиснение защиты бумажных бланков, краска для печатей и «давайте запишем Вас на среду».

Блокчейн дает возможность не только хранить информацию без возможности ее модификации и удаления, но и, что более важно, производить любые верифицированные операции над данными, в частности – исполнять алгоритмы. Алгоритмы, подписанные обеими сторонами и выполняющиеся на неподконтрольных участникам сделки машинах, и называются smart контрактами. Эта штука является ожившим волеизъявлением обеих сторон, существующим самостоятельно и живущим по подписанным обеими сторонами законам. Это гораздо более дешевый, более надежный, неподкупный и мгновенно работающий способ решения концептуальной проблемы необходимости третьей стороны при взаимодействии участников, не доверяющих друг другу. Внимание к этой технологии столь велико именно потому, что это первое найденное за все время существования человечества решение одной из самых больших задач и проблем общества.

 

В приведенном выше коровье-бушельном примере смарт – очень дешевый, но очень надежный сейф, куда кладется аванс, и он откроется автоматически как только плательщику покажут корову. Это классический эскроу, только бесплатный, быстрый, невосприимчивый к влиянию ни одной из сторон и работающий 24/7.

Как это работает?

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

Консенсус в основе Bitcoin называется Proof-of-Work, или доказательство работой. Этот способ взаимодействия участников был придуман задолго до появления Bitcoin, но использовался в основном в теоретических разработках. Суть его сводится к тому, что подписать следующий блок может любой участник сети, но для этого нужно произвести ряд бессмысленных и беспощадных вычислений, сложность которых всегда пропорциональна вычислительной мощности всей сети. Тот, кто нашел валидный хэш нового блока, получает вознаграждение (25 BTC за сам блок плюс комиссию с транзакций) и гордое звание майнера. Необходимость иметь большую мощность делает попытку взлома системы бессмысленной – затраты почти наверняка будут больше возможной выгоды.

PoW обладает рядом недостатков, основными из которых являются бессмысленная трата ресурсов (еще в прошлом году на майнинг битка расходовалось электроэнергии по миру на $1млн в день) и низкая скорость работы (в случае с тем же биткоином – не более ~10 транзакций в секунду). Поэтому в 2011 году были предложены новые варианты консенсуса: Proof-of-Stake, Proof-of-Burn и многие их разновидности.

Proof-of-Stake, подтверждение долей, основано на том, что формировать новые блоки может не кто угодно, а только тот, у кого на счету находится достаточно много криптовалюты. Возможная атака на сеть осложняется тем, что система выбирает кузнецов случайным образом (если в PoW блоки добываются шахтерами, то в PoS они куются кузнецами). С другой стороны, атака обессмысливается находящейся на счету суммой: если сеть будет скомпрометирована, то курс этой крипты резко упадет и злоумышленник потеряет свои деньги. Такой подход позволяет избежать лишней траты ресурсов (сформировать блок можно хоть с мобильного устройства) и существенно повысить скорость работы. PoS использовался в NXT, первой системе с технологией colored tokens – возможность мгновенно и бесплатно выпускать собственные токены на блокчейне этой сети, а сейчас используется в Waves и многих других блокчейнах. В Waves, чтобы ковать блоки и получать вознаграждение за входящие в них транзакции, необходимо хранить на адресе не менее 10K Waves, что на момент написания статьи эквивалентно 2 838 000 руб.

 

Proof-of-Burn, как следует из названия, более радикальный подход. Если операции, произведенные над будущим блоком, система интерпретирует как мошеннические, то депозит просто сгорает. Burning крипты – это отправка на слепой адрес, кошелек, с которого заведомо невозможно снять деньги.

Будущее Bitcoin, майнинговые фермы

Вариантов консенсуса много и со временем станет еще больше, но уже сейчас очевидно: PoW неэффективен. А если с ним все так плохо, почему же курс битка настолько бурно растет и почему количество майнинговых ферм увеличивается с каждым днем? Как и у любой фиатной валюты, курс биткоина формируется исключительной верой в него. Курс отражает среднее умственно-эмоциональное восприятие некоторой сущности участниками рынка. Восприятие же масс достаточно инертно, люди верят в биткоин не как в конкретную технологию, являющуюся динозавром в современном мире блокчейна, а как в олицитворение крипты в целом. С изменением технологий будет меняться и восприятие их сущности, с существенной задержкой, конечно же, но будет.

Ethereum, наиболее популярная на текущий момент сеть, поддерживающая смарты, запланировала переход с PoW на PoS в январе 2018 года. Сейчас дорабатывается алгоритм Casper, который планируется ввести в работу с хард форком сети. Сеть Tezos – более надежный и быстрый аналог Ethereum, тоже использует PoS консенсус. Разработчики Tezos провели одно из самых крупных ICO (собрали $230 млн менее чем за две недели) и будут запускаться в августе-сентябре 2017 года. Создатели этих систем понимают, что майнинг с логической точки зрения – странное и алгоритмически неэффективное занятие, которое в скором будущем потеряет актуальность.

Что из себя представляет смарт контракт

Смарт контракт – это программа, написанная на языке программирования, поддерживаемом той или иной сетью блокчейн. Например, вот так выглядит небольшая часть Ethereum-контракта на языке Solidity:

function voteForCandidate(bytes32 candidate, uint votesInTokens) {
uint index = indexOfCandidate(candidate);
if (index == uint(-1)) throw;
if (voterInfo[msg.sender].tokensUsedPerCandidate.length == 0) {
for(uint i = 0; i < candidateList.length; i++) {
voterInfo[msg.sender].tokensUsedPerCandidate.push(0);
}
}
uint availableTokens = voterInfo[msg.sender].tokensBought — totalTokensUsed(voterInfo[msg.sender].tokensUsedPerCandidate);
if (availableTokens < votesInTokens) throw;
votesReceived[candidate] += votesInTokens;
voterInfo[msg.sender].tokensUsedPerCandidate[index] += votesInTokens;
}

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

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

Правовая сторона

Для юриспруденции тоже настало новое время. Совершенно новые сущности невозможно регулировать принципами, выработанными до их появления. В разговорах по направлению ICO с юристами часто звучит шутка о том, почему же они тысячелетиями спокойно зарабатывали свои деньги, а именно сейчас на их долю свалилась штука под названием криптовалюта. Здесь открывается целый ряд вопросов, как очевидных (с регулированием SEC, комиссии по ценным бумагам США), так и тех, на которые сейчас обращается мало внимания (например, в Европе распространено right to be forgotten – право на забвение, по которому банки обязаны удалить абсолютно всю имеющуюся у них информацию о клиенте по его требованию, что в принципе невозможно в случае с блокчейн). И решение таких вопросов сложнее, чем кажется.

Тем не менее инновационность технологии блокчейн велика настолько, что общество, сумевшее ее органично интегрировать в правовое поле, совершит колоссальный скачок в развитии по сравнению с теми, кто до последнего будет от технологии отбиваться и без лишних разговоров привлекать организаторов ICO к ответственности по ст. 172.2 УК РФ.

Об ICO

ICO сейчас много: сотни прекрасных и не меньше мошеннических. Условно разделим их на четыре области: проекты, развивающие инфраструктуру блокчейна; цифровые решения; скам или фрод; продукты, применимые к реальной экономике.

Развитие инфраструктуры поощряется обществом – все самые крупные ICO находятся именно в этой области. Однако в последнее время даже у энтузиастов сформировалась некоторая усталость от ожидания практического применения всей этой красоты. Если в цифровых решениях это уже работает (ставки на спорт, киберспорт, универсальная игровая валюта, системы лояльности и прочее), то применений в реальной жизни этому мало. Начинает складываться ощущение, что инструмент готов, настроен, налажен и расчехлен, а применять его так никто и не начинает. Причины, конечно же, прежде всего юридические, но применение блокчейна в секторе реальной, физической экономики – самое долгожданное событие ближайших лет, которое будет во многом переворачивать принципы организации, работы и финансирования бизнеса.

Если говорить о финансировании, то важно понимать, что на текущем этапе ICO – это история не для инвесторов. Мир ICO – глобальный Kickstarter, в котором отсутствует сам Kickstarter как регулятор. Это глобальный краудфандинг и акцент тут именно на “крауд“. Если инвестор вкладывает $100k в бизнес, его будет сильно интересовать судьба этих денег, однако если $100k формируются одной тысячей вложений по $100 от разных пользователей, то внимание к ходу работы над проектом будет значительно ниже. С одной стороны, это открывает дорогу для огромного количества мошеннических схем. С другой стороны, появятся механизмы верификации намерений фаундеров, и люди очень быстро начнут пользоваться работающей скоринговой моделью для целей своих вложений. Члены общества начнут значительно быстрее обмениваться не только информацией, но и ресурсами. Блокчейн означает для экономики в этом смысле то же, что означало появление интернета для информации.

Итого

Как разработчики блокчейн сетей и smart контрактов мы не до конца понимаем юридическую сторону технологии блокчейн, но видим ситуацию с общей и технической точек зрения. А то, что мы сейчас видим – это не больше 5% от того, на что способна технология блокчейн, и от того, что появится в этой сфере в ближайшие годы. Общество достаточно инертно воспринимает инновации, меняющие его жизнь кардинально, особенно это относится к стремящимся к самосохранению государственным структурам. Однако те, кто быстрее увидит за всем шумом вокруг криптовалюты и ICO реальные работающие схемы, приводящие к колоссальному росту эффективности общества, станут следующими единорогами 🦄
А мы продолжаем работать над будущим :)

Как зарабатывать с помощью мобильного приложения

Главное – внимание пользователей

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

Telegram, WhatsApp, Twitter, Prisma, MSQRD и аналогичные популярные сервисы убыточны: в них или нет финансовой модели вообще, или она развита слабо и не способна покрывать затраты на поддержание и развитие инфраструктуры. Как правило, такие сервисы основатели содержат за свой счет с целью в дальнейшем ввести монетизацию (маловероятно) или продать сервис (скорее всего), либо привлекают деньги инвесторов ради будущей перепродажи сервиса, маржинальность которой колоссальна.


внимание пользователей стоит больше,

чем доход 

Но почему эти сервисы стоят огромных денег? Единственный актив в них – пользовательское внимание. Внимание – это самый дорогой ресурс на рынке мобильных приложений, и за него идет борьба. Под вниманием подразумевают как минутный взгляд, так и продуктивное использование сервиса. Но с ростом качества растет и ценность внимания. Поэтому первоочередная задача при проектировании идеи мобильного приложения – понять, как будет захватываться и удерживаться внимание пользователей.

readingelephant-vi-sualize-us

Путь к вниманию

Если с направлением идеи по созданию сервиса обычно есть определенность, то путь не всегда оптимален. Он вообще никогда не бывает оптимален :) Движение без ошибок в этой области практически невозможно, однако при систематическом подходе удастся избежать многих питфолов.


поиск кратчайшего пути нужно вести постоянно

Размышляя над способом добиться внимания пользователей (потенциальных клиентов), нужно регулярно перебирать разные инструменты и, возможно, разработка мобильного приложения окажется не самым коротким путем. Например, если вы хотите создать мобильное приложение, которое анализирует профили пользователей в социальных сетях и выдает некоторую статистическую информацию по ним, то подходящим средством будет приложение внутри социальной сети. Это может быть бот в Telegram или мобильная страница. Но поиск кратчайшего пути нужно вести постоянно.

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

success-perception-vs-reality

Стоимость привлечения

Следующим шагом будет математика, которая формирует модель вашего бизнеса. Пользователи не появляются сами собой на первых этапах жизни продукта – они стоят денег, каждый из них. Цена за пользователей разнится от 20 до 150 рублей за человека в зависимости от размера и качества канала. Чаще всего используется реклама через Facebook, ВКонтакте, Яндекс Директ и другие площадки. К статьям и другим видам ковровых бомбардировок при старте прибегать не следует, лучше сначала внимательно посмотреть на поведение пользователей в приложении, оптимизировать пути интерфейса, отполировать UI, что-то переделать, что-то добавить, что-то убрать, а уже после оптимизации прибегать к масштабированию пользовательской базы.

Прибыльность сервиса считается просто: берем цену за пользователя, считаем revenue per user (RPU, доход с одного пользователя) на заданном отрезке времени через retention и смотрим на разницу. Если она положительная – масштабируемся. Если нет – возвращаемся на цикл оптимизации.


пользователи не появляются сами собой
на первых этапах жизни продукта – они стоят денег

Допустим, вы попробовали привлечь пользователей разными каналами и опытным путем вывели среднюю цену человека в 20 рублей, что круто. Аналитика и вычисления показывают, что RPU с одного пользователя в месяц составляет 10 рублей. Месячный retention (удержание, возвращение) при этом 40%, и он плавный, то есть через 2 месяца останутся 15% от изначального числа, через 3 месяца – 6% и т.д. Получаем, что с одного пользователя сервис получит 10 руб. (в 1-й месяц) + 4 руб. (во 2-й) + 1.5 руб. + 60 коп. + 25 коп. и т.д., хвост меньше 5-10 копеек отсекаем и получаем 16 рублей 50 копеек. А стоил он нам 20 рублей.

В результате понимаем, что здесь нет бизнеса. Нужно или делать пользователей еще дешевле (в этом примере – сложно), или лучше их удерживать (40% – хороший результат, но есть куда работать), или увеличивать RPU (что может в свою очередь негативно сказаться на retention).

arpu

Заключение

Чтобы сделать нечто прекрасное в области мобильных приложений, нужно:

1. Разработать механику захвата внимания пользователей – как именно будете это делать (как бы коварно это ни звучало). Качественное внимание достигается либо качественным контентом, либо качественными услугами.

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

3. Проанализировать конкурентов. Мертвые важнее живых (драматичненько).

4. Посчитать экономику. Если она не сходится, то даже при самой прекрасной идее проект не заработает. Деньги тут не мера прибыли, а мера пользы сервиса для людей. Если нет прибыли, значит сервис не настолько полезен, чтобы за него стоило платить. Придумывайте что-то более полезное для всех сторон.

5. Запускаться потихоньку. Вышибать дверь таверны ногой, конечно, эффектно, но часто лучше сформировать понимание ситуации до момента полноценного вступления в игру.

Желаю всем красивых идей, больше пользы и удачных запусков! Давайте делать большие и качественные истории.

Кроссплатформенная и нативная разработка

Что такое кроссплатформенная и нативная разработка

Под нативной (родной) разработкой подразумевается использование оригинальных языков и инструментов разработки мобильной операционной системы. Для iOS приложения создаются в среде разработки XCode на языках Objective-C, Swift, C и С++. Для создания приложений под Android используется среда Android Studio и язык Java. Каждая среда разработки содержит целый комплекс утилит для написания кода, проектирования интерфейса, отладки, профилирования (мониторинга) и сборки приложений. И среда, и соответствующий набор утилит созданы специально под каждую мобильную операционную систему и являются максимально удобными и мощными средствами разработки мобильных приложений.

Кроссплатформенная разработка подразумевает использование специальных утилит (фреймворков) для создания приложения на основе семейства языков JavaScript. Вся структура и логика приложения создается с помощью таких инструментов (PhoneGap, Titanium, Xamarin, Cordova и др.) на JavaScript, а затем оборачивается в нативный запускающий элемент, т.е. интегрируется в базовый проект для XCode или Android Studio, что позволяет создавать сборки проекта с одной и той же логикой под несколько операционных систем сразу.

Ближайшая аналогия в случае с персональными компьютерами: MS Word, Skype, почтовые агенты, календари – это нативно разработанные приложения под настольную операционную систему; все, что происходит в браузере (сайты, онлайн-редакторы текста и графики, социальные сети, чаты, форумы) – это кроссплатформенные технологии.

Плюсы кроссплатформенной разработки

Кроссплатформенный подход к разработке имеет следующие положительные моменты:

  1. Требуется меньше ресурсов для реализации приложения сразу под несколько платформ. В этом, собственно, и суть кроссплатформенного подхода – один и тот же код работает и на iOS, и на Android. Программистов, занимающихся проектом, нужно ровно в два раза меньше. Дизайнер делает только один набор графики. Все это снижает количество рабочих часов и бюджет проекта.
  2. Меньшее время на разработку. За счет отсутствия уникальных элементов интерфейса и более простых технологий время на создание простых продуктов, как правило, меньше.
  3. Упрощенный цикл обновления продукта. Если в проект нужно что-то добавить или исправить какую-то ошибку, это делается сразу для всех платформ, на которые распространяется проект.
  4. Возможность использования мобильной версии сайта. Большинство кроссплатформенных решений используют семейство JavaScript языков, поэтому если у вас уже есть мобильная версия сайта, значительная часть кода и материалов может быть использована в приложении без изменений.
  5. Использование единой логики приложения. Заложенная логика в работу приложения будет работать гарантированно одинаково для всех платформ. Довольно часто это может являться и минусом из-за разной архитектуры операционных систем (яркий пример – кнопка Назад в навигации между экранами: в Android предусмотрена аппаратная кнопка Back для этих целей, в iOS – движение пальцем от левой части экрана или же наличие кнопки в левой части навигационной панели; если кнопку не делать вовсе, пользователи iOS не смогут вернуться назад; если сделать, но не на том месте и выглядящую нестандартно, пользователям iOS будет непривычно и неудобно; если сделать как в iOS, будет непривычно пользователям Android, однако написанная и отлаженная один раз логика содержит потенциально меньшее количество ошибок и расхождений в своей работе: вам не придется проделывать двойную и тройную работу по поиску проблем на каждой платформе.
Плюсы нативной разработки

Разработка на родных технологиях и языках под iOS и Android имеет следующие положительные моменты:

  1. Скорость работы приложения. Так как приложение создается с использованием оригинальных инструментов разработки (XCode, Android Studio), получаемый в результате компиляции проекта код является оптимальным для данной платформы. Приложение получает полную аппаратную поддержку устройства (обработка тех же изображений осуществляется отдельным процессором, специально для этого предназначенным – GPU), используется многопоточность для реализации сложных задачи и загрузки контента в фоне, в процессе разработки программисты могут измерять скорость работы всех участков кода и при необходимости их оптимизировать, в их распоряжении также есть инструменты по мониторингу использования оперативной памяти, поиску возможных утечек и т.д.
  2. Гибкость в реализации. В отличие от ограничений в построении интерфейса и сложности визуальных эффектов, накладываемых фреймворками для кроссплатформенной сборки проектов, в нативной разработке реализовать можно все, на что способны технологии той или иной мобильной операционной системы.
  3. Использование последних технологий и зависимость от кроссплатформенных фреймворков. Новый программный и аппаратный функционал, предоставленный компаниями-производителями устройства и операционной системы, становится доступен для реализации сразу после выпуска соответствующих обновлений. К примеру, в iOS 9 заложена возможность поиска внутри приложений: в каждом из них должен быть реализован специальный метод, который возвращает результаты по определенному поисковому запросу. В результате для тех приложений, в которых этот функционал реализован, доступна возможность поиска контента через системный раздел поиска в iOS, там же, где осуществляется поиск приложений, контактов, событий и прочей информации. В случае с кроссплатформенной разработкой для реализации подобного функционала придется ждать не только релиза iOS 9, но и обновления соответствующего фреймворка, причем когда появится поддержка тех или иных новых возможностей и появится ли вообще, предсказать невозможно.
  4. Легкость и качество тестирования. Помимо упомянутого в п. 1 инструментария для контроля использования приложением аппаратных ресурсов устройства в распоряжении разработчиков и тестировщиков есть целых комплекс технологий. Во-первых, все параметры системы в процессе работы приложения контролируются автоматически. Если приложение стало использовать больше памяти, чем это ожидается, или больше ресурсов центрального процессора, это не останется незамеченным. Во-вторых, возможности в широком применении юнит-тестов – автоматического тестирования практически каждого метода в приложении. Если какая-то часть приложения перестала работать корректно вследствие каких-либо изменений кода, новая версия просто не соберется, а программист сразу увидит причину. В-третьих, доступны широкие возможности в интеграции систем удаленного мониторинга ошибок: в каждый нативный проект встраивается соответствующий функционал, который позволяет увидеть ошибку и ее причину, возникшую на устройстве любого пользователя.
  5. Полная поддержка со стороны магазинов приложений App Store и Google Play. Обе компании, Apple и Google, заинтересованы в том, чтобы пользователи получали максимально положительный опыт при использовании приложений на соответствующих платформах, который возможен на текущий момент. Это означает, что приложение должно выглядеть максимально качественно (если у экрана высокое разрешение, а изображения расплывчаты, в App Store приложение просто не пропустят), должно работать настолько быстро, насколько это возможно (если приложение отображает небольшой список элементов за 20-30 секунд, его так же не пропустят), и вообще все должно быть красиво и удобно. Если какие-то из этих параметров слишком низки или вообще не выполнены, приложение не пропустят в магазин. Если же они не на высоте, чего добиться с кроссплатформенными технологиями крайне сложно, а часто и невозможно в принципе, то ваше приложение никогда не будет рассмотрено соответствующими компаниями для размещения в специальных рекламных разделах (Featured). Среди приложений, находящихся во Featured-разделах и App Store, и Google Play, нет ни одного, сделанного с помощью кроссплатформенных технологий, за исключением игровых проектов, в которых интерфейс не является системным.
Выводы

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

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

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