Николай Ланец
9 дек. 2018 г., 12:19

MODX-Клуб 2.7.3. Вводим блокчейн Ethereum.

Всем привет!

Сегодня у нас очень важная новость - мы внедряем блокчейн :) Уже есть первые проведенные транзакции.

Вот такое короткое вступление, а дальше будет много-много буков, ну и вообще все будет как поток сознания, так что если вам тема эфира не интересна, можете пропустить. :)

1. Зачем?

Вот этот момент важно объяснить, но, боюсь, будет крайне сложно. Весь парадокс заключается в том, что хотя наверняка все слышали про блокчейн (особенно про то, как он взлетал и падал), реальная доля тех, кто с ним как-то сталкивался - очень мала. Даже программисты плавают в том, что есть адрес кошелька, а что есть приватный ключ, и как кошелек пополнить или выполнить перевод. (Это при том, что использование приватного ключа - только один из способов авторизации, если и другие, не говоря уже о всяких там холодных кошельках). По этой причине, скорее всего, сначала многим придется попробовать сделать хотя бы пару мелких шагов, ака завести себе этот самый ethereum-кошелек, пополнить его рублей на 150-200, ну и выполнить кому-нибудь перевод, к примеру, за полезную статью или компонент. Попробуйте сделать это, и быть может вы получите частичный ответ на вопрос Зачем?

Как это сделать? Нет, не надо никуда далеко ходить. Авторизуйтесь, зайдите на свою страничку, и там увидите соответствующую форму. И вот там у вас два пути, которые, как лакмусовая бумажка, покажут, на сколько вы знакомы с этериумом: Вы можете привязать свой существующий кошелек, если он у вас есть. Для этого просто надо ввести свой приватный ключ от этого кошелька (уточню сразу, что приватные ключи и аккаунты на сайте не хранятся, только публичные адреса). У вас есть кошелек? А быть может и не один? Поздравляю! Вы активный пользователь современных технологий. Нету? Не расстраивайтесь. Жмите кнопку создать, затем Сгенерировать приватный ключ. Для вас будет сгенерирован приватный ключ и заветный кошелек.

Важно! Запишите и сохраните этот приватный ключ. Мы не храним приватные ключи и восстановить их нет возможности. Нельзя сбросить или типа того. А методом перебора восстанавливать - века уйдут. Так что если вы в процессе накопите у себя какую-то сумму, вы не сможете ей воспользоваться без этого ключа. В форме еще есть галочка "отправить данные на вашу почту". Лучше ее оставить, при создании кошелька, данные его вместе с приватным ключом будут отправлены на вашу почту.

Что дает этот кошелек?
  1. Любой пользователь сайта, имея такой же кошелек с положительным балансом, может отправить вам внутренний перевод.
  2. Вы, при наличии положительного баланса, сможете отправить любому другому участнику Клуба внутренний перевод, если у него есть кошелек. Как пополнить? Там же, когда заведете кошелек, появится кнопка Пополнить, и краткое описание процесса, плюс ссылка на проверенный сервис. То есть вы не платите MODX-Клубу ничего, вы покупаете Eth для своего кошелька, а здесь просто можете его использовать.
  3. Абсолютно не ограничиваясь только MODX-Клубом, вы можете свободно пользоваться этим кошельком во всей мировой системе Ethereum.
Уточню: мы не вводим какую-то свою собственную изолированную внутреннюю валюту. Мы подключаемся к глобальной сети Ethereum и развиваемся вместе с ней. При этом, чтобы ни случилось с самим MODX-Клубом, ваши кошельки от него не зависят. Мы просто делаем так, чтобы работа с ним была проще, а совместная интеграция сервисов более тесная.

2. Зачем?

Предыдущий текст на самом деле мало давал ответов на этот вопрос. Сейчас будет более по сути.

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

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

Баланс кошелька отражает актуальность и вовлеченность специалиста.

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

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

Таким образом, просто по активности кошельков, можно примерно делать выводы кто сейчас открыт для заказов, а кто просто тут по старой памяти в базе лежит. Далеко ходить не надо, можно посмотреть на рейтинг пользователей в modx.pro (здесь и далее буду ссылаться на modx.pro, потому что пользовательская активность там значительно выше и проще выводы делать). Я там все еще на 6-ой строчке. При чем по-моему, моя позиция не менялась уже более года. Моя позиция разве о чем-то говорит? С практической точки зрения ничего. Я оттуда заказы не принимал уже давно, топики и комментарии пишу крайне редко, то есть по сути никакой пользы от меня там нет. Но зато я занимаю одну из строчек ПОТ-10. А в это время может кто-то ищет заказчика, но первые строчки заняты вот таким мамонтами...

Проще продвигаться.

Баланс кошелька - это не всегда именно заработанные средства. Думаю, не редки будут случаи, когда сначала баланс будет появляться из своих собственных средств (а что вперед было, курица или яйцо?). Сценарий очень простой: вот есть опытный специалист, несколько лет он уже работает в крутой конторе, у него опыт богатый и все такое, но по какой-то причине они решили расстаться, и теперь это вольный специалист. Какие у него варианты продвижения на любой классической площадке? Как в случае с тем же modx.pro, скорее всего, это путь будет не быстрый (публиковать компоненты, писать топики и комменты, зарабатывать плюсики, и может когда-нибудь он выйдет в ТОП (когда мамонтов выпилят с проекта)). Согласитесь, не очень-то перспективно. А что такой специалист, с большим опытом и желанием работать может сделать здесь? Он может из своих средств внести себе нормальный баланс на кошелек и заявить "Вот он я, я готов к работе". И это не классическая реклама. Это вложение своих средств, чтобы выделиться на фоне тех, кто скорее всего не заинтересованы сейчас в работе.

Ваши деньги для меня звучат более убедительно.

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

Наглядная партнерская сеть.

В наше время все больше и больше вырисовывается тенденция, что на один проект, даже не особо крупный, надо несколько специалистов. Связано это с усложнением технологий и сжатием сроков реализации. Проще говоря, сложно найти специалиста, который бы мог в проекте от и до. Далеко ходить не надо, посмотрите на MODX-Клуб:) Я не дизайнер, хотя вряд ли кто-то будет оспаривать, что технологии здесь применяются современные. Так вот, и мне частенько нужны помощники. И помощникам нужны помощники. То есть если кто-то взял проект, скорее всего ему понадобятся помощники на отдельные задачи. И конечно же они будут как-то с друг другом рассчитываться. И вот если есть возможность видеть эту цепочку взаиморасчетов, ее интенсивность и т.п., можно примерно понять насколько активен специалист и насколько выше или ниже шанс, что если он не справится, сможет легко найти себе помощника, а не скажет "Я не могу, найдите на эту задачу другого специалиста, я верну 10% бюджета" или "Тут много подводных камней оказалось, надо бюджет увеличить на 40%".

1 рубль лучше 10 лайков.

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

Инвестиции в разработки.

Каков на сегодня основной сценарий появления компонентов для MODX? На самом деле не только для MODX.
  1. Выходит публикация из серии "Я выпустил новый классный компонент, стоит N денег, разбирайте пока есть".
  2. ...
  3. ...
  4. Извините, поддержки и развития больше нет, я занимаюсь другими проектами.
Я специально добавил второй и третий неопределенные пункты, потому что чаще всего они никакого отношения к компоненту не имеют, но все равно есть, так как до 4-го обычно проходит какое-то время. То есть публикуется компонент, потом проходит время, потом он умирает.

Почему так происходит? Тут несколько причин, но я хотел бы выделить несколько, которые, на мой взгляд, можно было бы решить.
  1. Отсутствие изучения спроса. То есть как правило компоненты появляются спонтанно, как бонус с выполненных сторонних проектов. Программист выполнял проект, сдал работу, а после взял наработки и опубликовал компонент, дабы еще что-то заработать с этого. Но он не спрашивает общественность, а нужно ли это кому-то еще? А если нужно, то сколько и за сколько. В итоге цена ставится исходя из ожиданий исполнителя, а не реалий рынка. Разработчик думает "продам 10 штук по 3000" и заработаю 30 000, хотя может по 2000 продал бы 50 и заработал 100 000, а на самом деле продал две и ушел в минус на 5000.
  2. Нет стабильной очереди заказов. Чтобы разработчик не забрасывал разработку, у него должен быть стабильный поток заказов по компонентам, некий календарь. При чем не из серии "Вчера надо уже 5", а потом две недели без работы, а стабильно, с небольшими перерывами на выходные и с постоянным доходом на жизнь.
  3. Невозможность передать проект другому. Еще одна важная причина - программист вырастает. То есть месяц назад он делал 5 штук за 10 000, а сегодня у него уже очередь из тех, кто готов платить по 30 000 за 2. И что интересно, предыдущие компоненты могут быть очень даже качественными, но они требуют участия, то есть элементарный саппорт и какое-то развитие по мелочи. Но впереди дорога к звездам... А ведь выход очень простой: можно было бы просто передать их другому программисту. И компоненты бы развивался, и клиенты довольны были бы, и может еще какой процент капал. Но тут сразу несколько Но возникает: 1. Если кому передавать, скорее всего его тоже обучать надо, ведь чаще всего таким компоненты идут с закрытым кодом и другие разработчики просто могут оказаться не готовы к подноготной. 2. Эти новые программисты могут сделать еще хуже, а это уже не только трата времени впустую, но и репутационные риски, а может и финансовые. 3. Кто гарантирует честные процентные отчисления? И вот хорошие компоненты принесены в жертву ради дальнейших достижений.
Какое я вижу решение этих проблем?
  1. Смарт-контракты. Сценарий простой: программист публикует несколько контрактов с прописанными условиями Что он предлагает, Сколько хочет на это денег, Какой процент от бюджета должен быть собран, чтобы он начал работу, Каковы сроки выполнения, Каковы условия возврата средств, Какова конечная стоимость компонента в зависимости от объемов пресейла и т.п. Смарт-контракты позволяют довольно четко описывать эти моменты и при правильном оформлении здесь все защищены. Программист берется за работу только тогда, когда деньги уже лежат. Деньги окончательно уйдут программисту только после окончательного утверждения выполнения условий контракта. Бюджет по каждому из контрактов лежат отдельно и проще отслеживать целевое расходование. Есть история ранее выполняемых контрактов. При таком раскладе конечная стоимость компонентов более сбалансированная для всех сторон. Программист не тратит свои силы зря, а заказчики не раскидываются просто так деньгами.
  2. Из реализации первого пункта вытекает и решение второй проблемы. Когда у программиста несколько контрактов в наполненными бюджетами, ему проще планировать свою деятельность: то ли добавить еще идей-контрактов, то ли поднажать с реализацией в этом месяце без выходных и стать сказочно богатым, а может позакрывать часть контрактов и вернуть по ним депозиты, но улететь отдохнуть на пару недель, ведь в прошлом месяце уже закрыл кучу проектов и сказочно разбогател.
  3. Я убежден, что современный интернет должен развиваться только как open-source. Здесь больше плюсов, чем минусов. Просто схемы монетизации надо скорректировать и все. Но зато проще с передачей уже существующих проектов. Тот, кто вырос, может на каких-то условиях передать другому, что еще только растет, но уже чувствует в себе силы и готов принять сторонний готовый бизнес. И здесь в помощь: 1. Открытый исходный код. Кандидат уже подготовлен, он много раз работал с этим компонентом и знает что и как там. 2. Прозрачная финансовая модель. По контрактам видно сколько на что приходит средств и уходит. 3. В смарт-контракты легко и на долго закладываются все партнерские условия (гарантийный депозит, автоматические отчисления и т.п.). Создали контракт, кандидат вкинул туда гарантийный депозит, владелец передал все репозитории компонента и получает процент с денежных движений. Отработали условленный срок честно, залог возвращается, человек заработал на стороннем готовом бизнесе. Нарушили условия - обеспечительный платеж ушел куда надо, а у приемника остались полученные компоненты.
Понятное дело, что это упрощенная схема одного из частных случаев, но все же, я думаю, к этому стоит стремиться.

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

И еще важный момент, традиционно напоминаю: все реализованное выкладывается в исходных кодах. Вот исходный код сайта modxclub.ru, вот серверная часть модуля работы с ethereum, а вот клиентская. Все данные доступны по API и можно не только получать и выводить где угодно данные, но и модифицировать их в рамках имеющихся прав. К примеру, вот запрос на получение пользователей, у которых есть кошельки и транзакции по ним. Можно попробовать открыть сразу в редакторе (но не всегда открывается).
query users { users ( first: 5, orderBy: createdAt_ASC where:{ EthAccounts_some:{ id_not: null } }, ){ ...user } } fragment user on User{ id username fullname email image EthAccounts{ ...account } } fragment accountFields on EthAccount { id address createdAt name chainId balance( convert: ether ) } fragment account on EthAccount { ...accountFields CreatedBy{ id username } OutcomeTransactions ( orderBy: createdAt_DESC first: 5 ){ ...transactionFields Account{ ...accountFields } } IncomeTransactions ( orderBy: createdAt_DESC first: 5 ){ ...transaction } } fragment transactionFields on EthTransaction{ id createdAt address type amount } fragment transaction on EthTransaction { ...transactionFields Sender { ...accountFields } Receiver { ...accountFields } Account{ ...accountFields } }
На том пока все.

Николай, вопрос по смарт-контрактам возник и по передаче своего компонента, как бизнеса. Контракт теоретически можно составить так, чтобы он регулировал выплату части дохода в течении длительного времени? Или контракты заточены именно на простые операции и гарантируют, что две стороны выполнили взятые на себя обязательства?
Дима, советую к прочтению: http://inaword.ru/bez-rubriki/smart-kontraktam-ethereum-eto-prosto-chast-1-vvedenie/
Несколько статей на предмет разработки смарт-контрактов. Не очень актуальные, зато относительно просто написаны и раскрывают многие ключевые моменты.

Если будет мало, советую еще вот это:
https://habr.com/company/raiffeisenbank/blog/338172/
https://habr.com/post/340928/

Краткая сводка:
Смарт-контракты мало чем ограничены. Основной используемый язык для их написания - solidity (к слову, в обозримом будущем дам обучающий материал). Язык очень похож на javascript (что кого-то привлечет, а кого-то отпугнет))). Там есть все необходимые операции сравнения, вычисления и т.п., а так же циклы и условия. А еще можно составлять контракты из контрактов. То есть в итоге можно обширную логику прописать, вплоть до интернета вещей.
>> Я не дизайнер, хотя вряд ли кто-то будет оспаривать, что технологии здесь применяются современные.
Вот да, прямо в точку попал, так как все круто и здорово, но блин, чисто визуально modxclub не читабелен. Я сам любитель минимализма, но черт подери подобрать шрифт и обернуть код в соответствующий тег (который тоже можно стилизовать), этож не так сложно. Можно посмотреть в сторону того же медиума. Просто еслиб это было только сейчас, то одно дело.... мол сайт переехал на js нет времени на дизайн и т.д.. Но это не так, эта вечная проблема modxclub, он никогда не был читабельным при этом на нем были безумно интересные статьи. Может это некий дизайнерско-минималистичный метамодерн и я не выкупаю... хз
Я с вами согласен. Но для меня сейчас более значимы технические задачи. Посмотрите список задач. Поверьте, мне есть чем заняться, и да, мне некогда. То есть если я сейчас сяду и займусь оформлением, то кто будет выполнять программную часть? Вы? Не думаю. Я уверен, найдется не мало дизайнеров, которые смогут с легкостью выдать какое-нибудь замечательное оформление. А вот программиста на эти задачи? Не уверен. Это не так просто, как кажется.
Да и оформлять что? Еще не ясно кому что надо. Какая разница как это будет оформлено, если этим не пользуются? Сейчас мы это оформим, потратим время и средства, а функционала достаточного так и не будет. А мне минимального оформления достаточно. Главное, чтобы функции свои выполняло. Зато я вижу тьму просто сайтов оформленных нормально, но в которых сильно не хватает функционала.

Но, я вижу свет в конце тоннеля, и скоро таки надо будет заняться оформлением (когда функционал утрясется). Вот тогда я выделю бюджет и найду ребят, которые сделают красиво. Может и вы проявитесь, если захотите.
Ну наверное (я не утверждаю), читабельность является более важным фактором чем ввод этериум в качестве рейтинга.
Я кстати похожим образом с прокрастинацией борюсь. Вот надо сделать что-то очень полезное и важное но при этом вполне обыденное, мне обычно лень этим заниматься и я делаю что-то другое менее важно, но зато более интересное =)
Хотя с другой стороны, я так vue начал осваивать и внедрять в реальный проект, причем не в самый маленький... Плюс твои заметки по graphQL очень занятны, я теперь читаю материал на эту тему и хочу все переделать именно в эту связку. Ну да ладно, думаю стоит перестать писать не по теме=)
Запилил топик. Теперь вы сможете, если есть желание, оформить так, как вам нравится, с чувством вкуса. И отправить PR.

Добавить комментарий