Русский
Русский
English
Статистика
Реклама

Blockchain

Безопасность блокчейн операций новые возможности новые риски

18.05.2021 12:12:57 | Автор: admin

source


Анализ уязвимостей, зафиксированных NIST (National Institute of Standards and Technology) в 2020 г., показывает устойчивый тренд роста в сравнении с предыдущими годами. В среднем, в прошлом году каждый день фиксировалось 50 новых уязвимостей, 57% которых относились к критическому либо к высокому уровню серьезности последствий. Развитие технологии блокчейн, речь о безопасности которой пойдет в данной статье, не является исключением с точки зрения подверженности киберугрозам. Подход, который изначально создавался, как альтернатива недостаткам существующей банковской системы и должен быть открыть новые возможности для бизнеса, не избежал рисков, присущих финансовым онлайн операциям. С 2012 по 2020 гг. блокчейн-индустрия лишилась более $13,6 млрд в результате 330 хакерских атак. В статье мы рассмотрим, в чем заключаются причины уязвимости решений на базе блокчейн.


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


  • криптографические алгоритмы;
  • ключи (кошельки);
  • алгоритмы консенсуса;
  • смарт-контракты;
  • ноды (узлы) сети;
  • компоненты пользовательского интерфейса и приложений.

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


Уязвимые компоненты Возможные уязвимости Примеры атак
Криптографические алгоритмы Bitcoin и Etherium используют криптографический алгоритм Elliptic Curve Digital Signature Algorithm (ECDSA). В случае некорректной реализации генератора случайных чисел, используемого для подписи, при наблюдении за публично доступными транзакциями может быть восстановлен закрытый ключ, используемый для подписания транзакции. Некорректной реализацией может быть, например, использование константы в качестве случайного числа или повторное использование одного и того же случайного числа В 2018 г. злоумышленники похитили более $4 млн с кошельков пользователей IOTA. Все пострадавшие пользовались услугами вредоносного сайта для генерации секретных фраз
Ключи (кошельки) В случае потери ключа пользователю невозможно предоставить доступ к своему аккаунту. При компрометации ключа невозможно перезаписать цепочку блоков. Возможна атака по словарю на закрытый ключ (полный перебор паролей) Распространена практика генерации закрытого ключа из какого-либо текста путем получения значения хэш-функции от данного текста. В этом случае, атака может быть совершена путем анализа цепочки транзакции блокчейна и поиска таких адресов, закрытые ключи которых совпадает с полученными по заранее подготовленному списку фраз
Алгоритмы консенсуса Proof of work (PoW) подвержен атаке 51%. Если в руках злоумышленника находится больше половины всех вычислительных мощностей в сети, то он получает контроль над ее ресурсами, включая переписывание истории, проведение транзакций с двойным расходованием, блокировку чужих транзакций, подтверждение своих блоков и т.п. Консенсус Proof of Stake (PoS) подвержен атаке Long Range, в ходе которой злоумышленник с незначительным минорным количеством средств может создать большое альтернативное количество блоков, которые по длине превзойдут основной блокчейн. Основной блокчейн может быть после этого подменен. В случае использования алгоритма консенсуса Byzantine Fault Tolerance (BFT) атака возможна, если скомпрометирована одна треть вычислительных ресурсов сети Реорганизация блокчейна и двойное расходование токенов Ethereum Classic на сумму $460 тыс. (2019 г.)
Смарт-контракты Смарт-контракт по сути является компьютерной программой, которая может содержать ошибки и уязвимости. Особенностью является сложность внесения исправлений после распространения смарт-контракта в сети. Источниками уязвимостей являются: несоответствие стандарту ERC20 (токен Ethereum), некорректная генерация случайных чисел, неверное определение области видимости, некорректная верификация отправителя транзакции, целочисленное переполнение (integer overflow), ошибки в бизнес-логике, использования уязвимых внешних библиотек Инцидент с проектом DAO в 2016 г., в результате которого была похищена криптовалюта на сумму $50 млн
Ноды (узлы) сети Ошибки, допущенные при настройке инфраструктуры, развертывании блокчейн платформы, удаленном вызове процедур, настройке политики безопасности могут привести к эксплуатации известных злоумышленнику уязвимостей с последующим несанкционированным добавлением транзакций в блокчейн Возможность проведения атаки DNS rebinding
Компоненты пользовательского интерфейса и приложений Блокчейн реализуется в веб среде и подвержен всем уязвимостям, присущим десктопным, мобильным и веб приложениям. При проведении Initial Coin Offering (ICO) возможны дополнительные уязвимости, позволяющие провести атаку на организаторов ICO и уязвимости, позволяющие провести атаку на инвесторов Злоумышленниками практикуется выполнение действий от имени пользователя, кража учетных данных, подмена информации о ценах, подбор PIN-кода приложения, проведение фишинговых атак. При выполнении операций на трейдинговых платформах возможно выполнение операций от имени пользователя, кража учетных данных для авторизации в приложении, ввод пользователя в заблуждение путем подмены отображаемых цен

Блокчейн, как и любая веб технология подвержен влиянию человеческого фактора, а также уязвимостям, присущим мобильным и веб приложениям. Проблемой является и нехватка опытных разработчиков, имеющих опыт запуска проектов блокчейн. С одной стороны, блокчейн совершенствуется, и новые проекты, подобные FreeTON или Ethereum 2.0, заявляют о новых качествах, таких как снижение энергопотребления, повышение скорости обработки транзакций, повышение эффективности протоколов консенсуса и т.д.


Решит ли это все вопросы с безопасностью? Полностью точно нет. Но от части может. Во-первых, на сегодняшний день популярны методы формального анализа и аудита безопасности смарт-контрактов, которые дают очень высокий уровень защиты от проблем, подобных взлому Ethereum DAO в 2016 году. Во-вторых, для более сложных случаев, где тяжело формализовать все цепочки взаимодействий смарт-контрактов, часто применяются баг баунти программы с приличными призами до сотен тысяч долларов для тех, кто сможет найти уязвимость в коде или алгоритмах работы смарт-контрактов на определенном блокчейне. Безусловно, блокчейны нового поколения, такие как FreeTON благодаря невысокой стоимости и высокой скорости работы дают бОльшие возможности для тестирования на стрессоустойчивость смарт-контрактов, нод и консенсуса в целом, чем пользуются в настоящий момент разработчики смарт-контрактов и валидаторы нод.


Что касается уязвимостей в компонентах пользовательских интерфейсов, увы, это проблема остается за пределами возможностей современных блокчейнов. Однако, со временем, по мере роста количества и качества средств разработки ПО (SDK) и best practices, а также, с ростом возможностей современных UI/UX библиотек взаимодействовать напрямую с блокчейном (без серверной части приложения, см. рисунок), количество атак на внешние системы будет снижаться. И конечно, стоит помнить о таких базовых организационных приемах обеспечения безопасности, как обучение персонала, аудит и анализ приложений, пентестинг, мониторинг и анализ защищенности инфраструктуры, применение SIEM-систем для обнаружения и предотвращения атак.

Подробнее..

Поиск коллизий в SHA-256 на платформе Node.js при помощи Bitcoin Hasher

09.06.2021 14:20:05 | Автор: admin

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

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

Для понимания работы приложения Bitcoin Hasher содержание статьи было поделено на небольшие разделы:

  1. Немного теории

  2. Немного о SHA-2

  3. Немного о Blockchain

  4. Bitcoin Hasher

  5. Полезные материалы

1. Немного теории

Алгоритмом шифрования называется некая функция принимающая на вход строку произвольной длины, которая посредством определённого математического алгоритма преобразует INPUT (строку произвольной длины) в OUTPUT (строку фиксированной длины). Данный процесс конвертации называется хешированием или шифрованием. Конечным результатом шифрования любой подающей на вход информации называется цифровым отпечатком (дайджестом). Цель любого алгоритма заключается в сжатии, рассеивании и перемешивании входной информации. Оттого насколько сильно она преобразована будет зависеть не только безопасность этого самого отпечатка, но и алгоритма хеширования посредством которого был сформирован отпечаток. Наглядный процесс конвертации показан на схеме:

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

  1. В результате преобразования полученный фиксированный ключ должен обеспечивать надёжную защиту информации

  2. При незначительном изменении входной информации пропускаемую через hash-функцию должно соблюдаться существенное изменение выходного значения

  3. Отсутствие какой-либо зависимости между входной и выходной информацией

  4. Сложность или невозможность подбора входного значения для цифрового отпечатка

Целью шифрования информации при выборе наиболее стойкого и нового стандарта является сохранение и необратимое преобразование исходных данных, что на мой взгляд является и одним из важнейших его преимуществ. Недостатком - появление неизбежных коллизий при преобразовании. Предположим что есть два отличающихся информацией входных блока (x) которые нужно "пропустить" через функции хеширования (H) и получить фиксированной длины отпечатки (y). Если блоки (x) проходящие через функции (H) будут иметь одинаковые отпечатки (y) значить в результате выполненной работы образуется коллизия:

2. Немного о SHA-2

На момент написания этой статьи одним из наиболее эффективных алгоритмов хеширования является семейство криптографических систем защиты информации SHA-2 (Secure Hash Algorithm Version 2 - безопасный алгоритм хеширования, версия 2).

Все функции, которые входят в данное "семейство", а именно: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/256 и SHA-512/224 построены на основе структуры Меркла-Дамгарда, что сказывается на их реальной стойкости к различным видам атак. Принцип работы абсолютно всех вышеприведённых алгоритмов заключается в разбивке входящей информации на части одинакового размера, каждая из которых подвергается обработке выбранной односторонней функцией сжатия. Ключевым преимуществом при таком подходе является алгоритмическая односторонность, то бишь невозможность восстановления каких-либо исходных данных на основе полученного выходного результата без наличия сформированного ключа. Данное элегантное решение было представлено взамен устаревшему SHA-1 Агентством Национальной Безопасности США в 2002 году для более надёжного шифрования конфиденциальных данных. Одним из наиболее применимых на сегодняшний день алгоритмов является SHA-256, свою популярность по внедрению его в различные системы он завоевал благодаря таким масштабным проектам как: Bitcoin и Blockchain (о Blockchain далее остановимся чуть подробнее). Все представленные функции благополучно работают и применяются по сегодняшний день.

Ниже представлен результат работы каждого из алгоритмов, которые входят в семейство SHA-2:

SHA-224:       Hello World ! --> 2c8abaa6a94a76fe9c6005994567d67a1631bc90dfca267099dc750fSHA-256:       Hello World ! --> 07f2bdef34ed16e3a1ba0dbb7e47b8fd981ce0ccb3e1bfe564d82c423cba7e47SHA-384:       Hello World ! --> 67e60f9ce837caa3ca82550f0dfcbde1b8b8a7c1605fa8d115bcc2314204fd95f5f607306622c38c0205de7df6d426d8SHA-512:       Hello World ! --> feab0028f1142d420a1425d1dd5b518225b4523aa1cff63385ece3411318819f5ec83042ccb79d81f20e4a243866886ca3ae3026153acff8e126c0e89631502eSHA-512/256:   Hello World ! --> a70e1d1268e729e90db4c0834214f449c8e7b652777f40a8a0d26f2372e39ca7SHA-512/224:   Hello World ! --> 7cc0d174b7ce522eff7d7ee59789e420d75d0244f006ef8ce0f4efb7

3. Немного о Blockchain

Для понимания работы приложения я обязан написать пару слов о Blockchain сети так как именно она базируется на работе с алгоритмом SHA-256 а, также является важным "поставщиком входной информации" для Bitcoin Hasher.

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

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

  1. (1991 год): Размышления о Blockchain, как о защищённом хранилище цифровых документов без возможности их подделки или возврата были описаны в работах Стюарта Хаббера и У. Скотта Шторнетта в 1991 году. Столь гениальная и стойкая идея была сформулирована задолго до появления Blockchain-сети.

  2. (1992 год): Для надёжной работы Blockchain в дизайн работы будущей сети инкорпорировали так называемое дерево Меркла, что впоследствии привело к налаживанию связей между всеми записями данных во всей цепочке глобальной экосистемы Blockchain.

  3. (2008 год): Некий человек или организация под псевдонимом Сатоши Накамото публикует документ под названием: "Bitcoin: a peer-to-peer electronic cash system". Данный документ впоследствии станет отправной точкой создания нынешнего Blockchain для валюты Bitcoin.

  4. (2009 год): В альтернативу нынешней финансовой системе Сатоши Накамото реализовывает децентрализованную, не подконтрольную не одной государственной единице, сеть Blockchain для работы с первой в мире цифровую валюту Bitcoin.

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

Вся информация о переводах в Blockchain хранится в виде блоков, каждый из которых представляет собой объект и имеет следующий вид (Пример блока под номером 685466, созданный 2021-05-30 08:05):

{      "hash": "00000000000000000009fde417c010d7ec9ffb25a268f4b0667681ed9b74cf65",       (уникальный идентификатор созданного блока)      "ver": 536870916,                                                                 (версия блока)      "prev_block": "00000000000000000007b7241ee4748769266870bdab4e5306379739db07c466"  (уникальный идентификатор предыдущего блока),      "mrkl_root": "8d620000ab7ba942a165ed49be563a31c33269ce8f2d40b8317784475a543fe7"   (хеш всех транзакций в текущем блоке),      "time": 1622351111                                                                (время за которое был создан текущий блок),      "bits": 386752379                                                                 (суб-единица BTC),      "nonce": 3069945434                                                               (случайное значение которое можно скоректировать для подтверждения работы),      "n_tx": 996                                                                       (колличество подтвержденных транзакций в текущем блоке),      "size": 1602081,                                                                  (размер текущего блока)      "block_index": 685466                                                             (индекс текущего блока),      "height": 685466                                                                  (высота текущего блока),      "tx": [         "--Array of Transactions--"                                                    (Массив транзакций содержащих информацию)      ]   }

Достоверную информацию о всех блоках и транзакциях, можно получить на сайте Blockchain, в разделе API.

Пройдя путь от идей и размышлений до самостоятельной технологии Blockchain стал таким, каким мы знаем его сегодня. Остальными этапами дальнейшего развития и формирования, вплоть до сегодняшнего дня, сводятся в постоянной поддержке стабильного и бесперебойного процесса работы для всех пользователей децентрализованной сети.

4. Bitcoin Hasher

Bitcoin Hasher представляет собой небольшое приложение для поиска коллизий в алгоритме шифрования SHA-256.

Осуществление поиска производится путем создания так называемого "двойного шифрования" цифровых отпечатков. То бишь из уже ранее зашифрованной информации полученной из Blockchain, приложение генерировало подобный отпечаток для каждой из транзакций посредством применения SHA-256.

Алгоритм работы сводился к следующему:

  1. На клиенте JavaScript делал новый XHR-запрос к Blockchain API следующего вида: https://blockchain.info/rawblock/ (уникальный идентификатор блока вводимый в input приложения).

  2. После отправки запроса к Blockchain серверам, в ответе Bitcoin Hasher получал детальную информацию о блоке, пример которой я уже описывал.

  3. Из поля "tx" приложение "забирало" массив дайджестов подтвержденных транзакций в конкретном блоке и на их основе Node.js генерировал точно такой же цифровой отпечаток каждой из транзакций.

  4. Параллельно работы генерации из поля "prev_block" (в которое входит значение идентификатора предыдущего блока) на клиенте JavaScript создавал новый XHR-запрос следующего вида: https://blockchain.info/rawblock/ (уникальный идентификатор предыдущего блока). Данный процесс был зациклен до тех пор пока все блоки и транзакции не будут обработаны.

  5. При параллельной работе клиент-серверного приложения все INPUT-OUTPUT данные записываются в папку db_blocks/block-NUMBER_BLOCK.txt

  6. Итоговой задачей остается найти INPUT дайджест, который является ключом к интересующему вас OUTPUT отпечатку.

Полезные материалы для ознакомления с приложением:

Repository Bitcoin Hasher

Пример формирования "двойного шифрования", для блока с высотой 665862 в Blockchain

Процесс работы Bitcoin Hasher:

5. Полезные материалы

  1. Алферов А. П., Зубов А.Ю., Кузьмин А.С., Черемушкин А. В. Основы криптографии. М.: Гелиос АРВ, 2001. 479 с.

  2. Децентрализованные приложения. Технология Blockchain в действии. С. Равала

  3. Практическая криптография. Нильс Фергюсон и Брюс Шнайер

Подробнее..

Dapp. Vue.js ethers.js

10.04.2021 12:12:31 | Автор: admin

Введение

В этой статье я попытаюсь максимально кратко и информативно пройтись по всем пунктам создания создания полноценного Децентрализованного приложения в сети Ethereum используя JavaScript фреймворк - Vue для создания веб-приложения и библиотеку ethers.js для общения со смарт контрактом. Также будут рассмотрены некоторые моменты о том, как установить и подключить кошелек, как задеплоить контракт в сеть используя truffle и др.

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

Что уже нужно знать перед тем как начать:

  • Неплохие знания js, в частности Vue.js

  • Понимание принципов работы Blockchain (смарт-контрактов)

  • Базовые знания языка пр. Solidity

Установка кошелька

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

Когда расширение установится - вас попросят создать кошелек или импортировать если такой имеется. После создания аккаунта у вас сгенерируется мнемоническая фраза. НИКОГДА, НИКОМУ ее не разглашайте. И воаля - у нас есть готовый адрес кошелька)

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

Здесь вы можете нафармить себе немного тестовых эфиров, чего нам хватит для работы.

Контракт

Пока не на долго забудем о нашем кошельке и приступим к написанию смарт-контракта. Для примера я буду использовать уже готовый контракт. Более подробно о нем вы можете ознакомиться с ним в README (он довольно простой). Основная идея - это купля-продажа. Продавец выставляет свой товар - покупатель ставит свою цену и делает предложение, продавец в свою очередь принимает предложение. Много нюансов упущено, но для для примера сойдет. Попробовать попользоваться контрактом вы можете в бесплатной IDE Remix.

Развертывание контракта

Для этой задачи мы будем использовать Truffle.js. Для его установки на вашей машине должен быть уже установлен node.js. Дальше открываем любой вам удобный редактор и в консоли через npm устанавливаем следующие пакеты (в моем случаи глобально): npm install -g truffle и npm install -g @truffle/hdwallet-provider После чего создайте папку, где будет хранится ваш проект и инициализируйте Truffle проект в нем командой truffle init.

В папке с проектом с начала обратим наше внимание на файл truffle-config.js. В нем хранятся конфигурации по развертыванию контрактов. Но прежде всего нам нужно будет зарегистрироваться в Infura и создать новый проект перейдя по вкладке Ethereum -> Create New Project соединяет интерфейс пользователя (UI) dApps с внешним смарт-контрактом на блокчейне Ethereum. Провайдер Infura может обрабатывать подписание транзакции, а также подключение к сети Ethereum без необходимости синхронизировать ноду и это именно то, что нам нужно. Дальше выбрав нужный созданный проект -> Settings -> Endpoints выбираем нашу сеть Ropsten и копируем указанный адрес.

Теперь можно перейти, непосредственно, к настройке truffle-config.js. Во-первых, создайте в корневой папке проекта файл .secret в котором будет хранится наша мнемоническая фраза. Лучше всего использовать dotenv, но для ознакомления оставим так, как предлагает truffle. Во-вторых, раскомментируйте следующие строки:

const HDWalletProvider = require('@truffle/hdwallet-provider');const fs = require('fs');const mnemonic = fs.readFileSync(".secret").toString().trim();

и также

ropsten: {    provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/v3/YOUR-PROJECT-ID`),    network_id: 3,       // Ropsten's id    gas: 5500000,        // Ropsten has a lower block limit than mainnet    confirmations: 2,    // # of confs to wait between deployments. (default: 0)    timeoutBlocks: 200,  // # of blocks before a deployment times out  (minimum/default: 50)    skipDryRun: true     // Skip dry run before migrations? (default: false for public nets )    },

И вместо второго параметра в HDWalletProvider поместите скопированный адрес.

В-третьих, создайте новый файл формата .sol в папке contracts, и поместите туда весь код контракта. В папке migrations создайте js файл и поместите туда следующий код:

const SimpleMarketplace = artifacts.require("SimpleMarketplace");module.exports = function (deployer) {    deployer.deploy(SimpleMarketplace, 'description', 1000);};

Обратите внимание, что при создании нового файла в migrations название файла должно начинаться с цифры следующей по порядку от файла 1_initial_migrations.js, то есть 2.

Так как у нас контракт содержит конструктор с параметрами - мы методе deploy вторым и третьим аргументами ставим именно их: description и price в нашем случае. Если у вас контракт без конструктора или с конструктором, но без параметром, то оставляем просто переменную SimpleMarketplace.

Сохраняем и в терминале с проектом пробуем скомпилировать контракт введя команду truffle compile. Важно: Если у вас выкидывает ошибку, что не найден пакет @truffle/hdwallet-provider,(Error: Cannot find module '@truffle/hdwallet-provider'),то попробуйте установить этот пакет в текущую директорию командой npm install @truffle/hdwallet-provider. без опции-g и скомпилировать снова. После вывода в консоль Compiled successfully using... можно пробовать деплоить.

Для развертывания контракта в сети в консоль введите truffle migrate --network ropsten --reset. Где ropsten - это название сети, что мы указали в файле truffle-config.js, а --reset опция, которая просто передплоивает контракт наново если вы уже выполняли подобные действия (при первом разе можно и без нее).Важно: Если у вас выбрасывает подобную ошибку: var e = new Error('ETIMEDOUT'), то попробуйте в truffle-config.js в HDWalletProvider вставить другой адрес, что предлагает Infura - wss://ropsten.infura.io/ws/v3/YOUR-PROJECT-ID.

Если процесс прошел без ошибок и в Etherscan перейдя по своему адресу вы можете наблюдать транзакцию, о создании контракта - поздравляю, контракт находится в сети blockchain и можно идти дальше.

Создание Vue.js приложения

И так, если все выше перечисленные шаги вам удалось произвести, то можно начинать писать веб-приложения для нашего контракта. Установку vue/cli и создание проекта я упущу, так как это детально описано в официальной документации Vue.js. Установка. Создание проекта.

После того как ваше приложение было создано можно начать писать саму логику. Для начала давайте удалим из все assets (в нем будет хранится логотип Vue.js, который нам не нужен), удалим компонент HelloWorld.vue из components и в файле App.vue уберем все лишнее (импорт компонента HelloWorld.vue, саму инициализацию компонента в объекте components и оставим чистый шаблон с <div id="app">внутри).

<template>  <div id="app">  </div></template><script>export default {  name: 'App',  components: {  }}</script><style>#app {  font-family: Avenir, Helvetica, Arial, sans-serif;  -webkit-font-smoothing: antialiased;  -moz-osx-font-smoothing: grayscale;  text-align: center;  color: #2c3e50;  margin-top: 60px;}</style>

Запустив проект командой npm run serve можете проверить, что все работает и нет никаких ошибок, как и в прочем, ничего вообще пока что.

Чтобы взаимодействовать с таким простым контрактом нам понадобится всего лишь один новый компонент - это главная страница на которой мы будем делать UI для нашего смарт-контракта. В папке components создайте новый компонент и назовите его, к примеру, Marketplace.vue. Так же создайте папку core и в ней файл core.js и в проекте, в котором мы развертывали контракт, перейдите в папку ./build/contracts и скопируйте от туда JSON - файл с названием вашего файла контракта (или же запомните путь к нему). Этот файл - это как-бы инструкция, которая говорит вам как можно обратится к контракту. Не обязательно создавать все эти папки и называть так файлы, но это просто считается хорошим тоном. В дальнейшем хорошо структурированный проект будет проще поддерживать. Перед тем как продолжить - установите в пакет npm install ethers.

В файле core.js проимпортируйте установленную библиотеку, укажите путь в JSON - файлу и возьмите оттуда адрес нашего контракта:

const { ethers } = require('ethers')const ContractArtifact = require('./SimpleMarketplace.json')const CONTRACT_ADDRESS = ContractArtifact.networks['3'].address

Дальше создадим переменную ABI, которая должна быть массивом строк и занесем туда все необходимые нам функции контракта, что мы будем использовать (Вы можете просто скопировать строку из контракта и занести сюда. Если в контракте просто public поле, для него можете тоже отдельно написать public view returns функцию и ethers не должен на это ругаться):

const ABI = [    'function InstanceOwner () public view returns(address)',    'function Description () public view returns(string)',    'function AskingPrice () public view returns(int)',    'function InstanceBuyer () public view returns(address)',    'function OfferPrice () public view returns(int)',    'function MakeOffer(int offerPrice) public',    'function Reject() public',    'function AcceptOffer() public']

После чего нам нужно определить ряд переменных:

let provider = new ethers.providers.Web3Provider(window.ethereum)//С помощью провайдера мы подключаемся к сети Blockcainlet readOnlyContract = new ethers.Contract(CONTRACT_ADDRESS, ABI, provider)//Дает нам возможность читать view методы контрактаlet signer = provider.getSigner()//Нужен для подтверждения транзакцийlet contract = new ethers.Contract(CONTRACT_ADDRESS, ABI, signer)let contractSigner = contract.connect(signer)//Дают возможность выполнять транзакции

Дальше определим методы которые будем вызывать во Vue компонентах:

export default {    async getDescription() {        const description = await readOnlyContract.Description()        return {description: description}    }}

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

const { ethers } = require('ethers')const ContractArtifact = require('./SimpleMarketplace.json')const CONTRACT_ADDRESS = ContractArtifact.networks['3'].addressconst ABI = [    'function InstanceOwner () public view returns(address)',    'function Description () public view returns(string)',    'function AskingPrice () public view returns(int)',    'function InstanceBuyer () public view returns(address)',    'function OfferPrice () public view returns(int)',    'function MakeOffer(int offerPrice) public',    'function Reject() public',    'function AcceptOffer() public']let provider = new ethers.providers.Web3Provider(window.ethereum)let readOnlyContract = new ethers.Contract(CONTRACT_ADDRESS, ABI, provider)let signer = provider.getSigner()let contract = new ethers.Contract(CONTRACT_ADDRESS, ABI, signer)let contractSigner = contract.connect(signer)export default {    async getInstanceOwner() {        const instanceOwner = await readOnlyContract.InstanceOwner()        return {instanceOwner: instanceOwner}    },    async getDescription() {        const description = await readOnlyContract.Description()        return {description: description}    },    async getAskingPrice() {        const askingPrice = await readOnlyContract.AskingPrice()        return {askingPrice: askingPrice}    },    async getInstanceBuyer() {        const instanceBuyer = await readOnlyContract.InstanceBuyer()        return {instanceBuyer: instanceBuyer}    },    async getOfferPrice() {        const offerPrice = await readOnlyContract.OfferPrice()        return {offerPrice: offerPrice}    },    async makeOffer(offerPrice) {        const txResponse = await contractSigner.MakeOffer(offerPrice, {gasLimit: 300000})        const txReceipt = await txResponse.wait()        return {transaction: txReceipt.transactionHash}    },    async reject() {        const txResponse = await contractSigner.Reject({gasLimit: 300000})        const txReceipt = await txResponse.wait()        return {transaction: txReceipt.transactionHash}    },    async acceptOffer() {        const txResponse = await contractSigner.AcceptOffer({gasLimit: 300000})        const txReceipt = await txResponse.wait()        return {transaction: txReceipt.transactionHash}    }}

Дальше я в файле App.vue в mounted методе вызываю подключение кошелька и в свойство $root заношу проимпортированный заранее наш файл core.js:

const core = require('./core/core')/*Какой-то другой код*/mounted() {    window.ethereum.request({ method: 'eth_requestAccounts' })    this.$root.core = core.default  }

Дальше под каждое поле, что вы хотите читать с контракта создаете поле в в data и метод details в объекте methods :

data() {    return {      instanceOwner: '',      description: '',      askingPrice: '',      instanceBuyer: '',      offerPrice: ''    }  },  methods: {    async details() {      this.instanceOwner = (await this.$root.core.getInstanceOwner()).instanceOwner      this.description = (await this.$root.core.getDescription()).description      this.askingPrice = (await this.$root.core.getAskingPrice()).askingPrice      this.instanceBuyer = (await this.$root.core.getInstanceBuyer()).instanceBuyer      this.offerPrice = (await this.$root.core.getOfferPrice()).offerPrice    }  },

Тем временем в разметке выводим необходимые нам поля:

<button v-on:click="details">Get details</button><h3>Instance owner: {{ instanceOwner }}</h3><h3>Description: {{ description }}</h3><h3>Asking price: {{ askingPrice }}</h3><h3>Instance buyer: {{ instanceBuyer }}</h3><h3>Offer price: {{ offerPrice }}</h3>

Код компонента Marketplace.vue можете проверить в моем репозитории, дабы не захламлять статью лишним кодом.

После запуска проекта у вас должно появится окно подключения кошелька подобно этому:

И после этого при нажатии на кнопку Get details мы получим данные, которые вводили при развертывании контракта.

А так выглядит вывод если произвести транзакцию:

Заключение

Это моя первая статья. Буду рад каким-то вопросам и даже критике, так как я сам пока не профи во всем этом.

Ссылка на контракт, где вы можете проверить транзакции.

Подробнее..
Категории: Javascript , Vuejs , Solidity , Blockchain , Dapp

Сказки про NFT для самых маленьких

20.04.2021 20:11:13 | Автор: admin

"Закопай свои монеты в Открытом Море и к утру разбогатеешь" Криптокот Базилио

Гифка за 580 000$, набор пиксельных панков за 7.5mil$ и Kings of Leon выпускающие свой альбом прямо на нем. О дивный новый мир искусства и какого черта в нем вообще происходит?

Аве Кодер!

Сегодня я расскажу вам сказку о невиданной широкой публике зверушкой, а именно про так называемые NFT и разумеется нас будет особенно интересовать техническая сторона вопроса ну и на протяжении всей истории, я конечно же, как винтажный газогенератор, буду удивляться - куда катится мир. <cut/>

Итак NFT или Non-Fungible Token, то есть Незаменимый Токен представляет из себя , по сути, набор цифровых данных на блокчейне.

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

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

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

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

С цифровым искусством все одновременно так и не так. Художник создает свою картину сразу в цифре, то есть в привычном нам графическом формате.

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

Так вот этот самый NFT токен, привязанный к картинке и дает такое же право собственности, которое дает какой-нибудь аукцион Сотбис обладателю оригинала Дали, разве что вместо картины известного мастера у себя над камином, твой джепег может также продолжать висеть в интернете, я и Мясистый Джо также можем использовать ее как заставку на рабочем столе, только теперь весь мир знает, что на самом деле, принадлежит она только тебе, а у нас всего лишь копии.

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

Дело в том, что такие токены и соответственно право владения цифровой единицей размещаются на публичном Блокчейне. То есть в теоретическом будущем, если технология NFT реализует свой потенциал такие токены будут способны перемещаться по всей экосистеме; если совсем на пальцах, то вы не будете заперты внутри той маленькой экосистемы, в которой вы приобрели свой цифровой продукт, например заходить в игровой обменник, чтобы продать кому-то скин, а сколько было случаев, когда кто-то брал билет у перекупщиков и уже на входе выяснял,что это подделка? Подразумевается, что блокчейн и система токенов навсегда решат проблему с ликвидностью и контрафактами, но пока это только-только зарождается.

А началось все с того самого криво нарисованного лягушонка Pepe и так называемых цветных монет, что было одной из первых попыток представления реальных активов при помощи блокчейна Биткоина.

Затем появляются пиксельные CryptoPunks, коллекция в десять тысяч голов, каждая из которых представляла собой уникальный коллекционный арт объект. И их токены уже гоняли на этом вашем Эфириуме.

И если не все оценили криптопанков, то как насчет котиков? Именно с запуском CryptoKitties в 2017 году по сути и начинается отсчет прихода NFTишек в мейнстрим. Котики делились на поколения, первый кот пришедших вмейнстрим был мейн-кун, шутка! На самом деле их было даже несколько и все они принадлежали к так называемому поколению 0.

Помимо того, что они были милыми и пушистыми, в их естество была встроена скрытая механика. Схема была проста как унитаз без бочка - покупаешь пару котиков, ждешь пока они дадут потомство и если потомок получился охонь - продаешь его другим цифровым заводчикам.

Все благодаря умному контракту зашитому в самого котика и определяющего его генетический код или как его называли сами создатели - котрибуты.

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

Итак, теперь о технической стороне вопроса. На чем же можно эти токены создавать? Поскольку блокчейн изначально затачивался под Ethereum, то и стандарты самых популярных умных контрактов написаны на Solidity, который очень подозрительно похож на JavaScript.

Стандарт ERC721, популяризированный CryptoKitties позволяет с легкостью сопоставлять уникальные идентификаторы, каждый из которых представляет собой единичный цифровой актив с адресом владельца этого идентификатора, а также позволяет передачу актива посредством метода transferFrom. Также можно пробить и владельца определенного контракта, при помощи метода ownerOf.

Стандарт ERC1155 заточен представлять класс активов. К примеру, один и тот же ID может обозначать сразу сотню цифровых единиц чего либо, скажем класс одинаковых билетов-приглашений на фермерских фестиваль мир гусей и куриц, и предположим, что наш кошелек содержит тысячу таких приглашений, за отображения количества единиц в кошельке отвечает метод balanceOf, а за перемещение активов со счета отвечает метод transferFrom.

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

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

В случае с криптокотами, метадата содержит имя кота, картинку кота и прочие дополнительные котрибуты.

В случае с билетом на мероприятие, метадата может содержать дату проведения, тип билета, возможно имя владельца, место и прочее.

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

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

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

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

Ну а пока, стандарт ERC721, к примеру, имеет метод tokenURI, который как раз и указывает на места хранения метаданных.

Итак, как же нам создать свой NFT токен? Естесственно можно заморочится, включить свою любимую IDE и освоить Solidity. Если вы владеете JavaScriptom, то для вас это будет что-то вроде освоения Болгарского языка после Русского.

Кстати процесс создания токена называется minting, то есть чеканка. Да, мальчик, mint это не только мята, но и чеканка и первый класс и свежесть и еще много чего.

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

Open Sea, которая является и самой крупнейшей берет порядка 60-ти баксов за открытие счета и 40-ка за минт. Есть оптимистичные новости, что летнее обновление ethereum блокчейн поможет существенно снизить эти затраты, но это, как говорится, только мечты.

И что мы по итогу имеем? Дабы огорчить всех тех, кто придет гадить в комменты с криками: что ты такое говоришь, V, там все совсем по-другому, ты не понимаешь смысл пустошей и прочую ерундистику, вот вам еще одна аналогия.

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

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

Теперь вы сидите такой дома и любуетесь на картинку на коробке из-под пазла.

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

Послесловие

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

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

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

А это был V, до новых встреч!

P.S. то же самое, только моим заунывным голосом и под веселые картинки:

Подробнее..

Блокчейн-платформа R-chain общая архитектура и эволюция

23.09.2020 18:06:49 | Автор: admin

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



Данная статья довольно объемная и вместе с этим информативная. Поэтому надеемся на вашу вовлеченность и предупреждаем о формате tutorial.

В 2016-2017 годах мы выполнили ряд исследовательских проектов по построению децентрализованной платформы для торгового финансирования. Использовали тестовый Ethereum (Rinkeby) как базовую платформу распределенного реестра и Ethereum Swarm как средство децентрализованного обмена файлами. Кроме общих вопросов построения децентрализованной платформы испытывали возможности смарт-контрактов, применения оракулов и арбитражных смарт-контрактов. Некоторые из этих результатов есть
На базе этих исследовательских проектов претворились в жизнь
Итогом этой достаточно длительной работы стал, как говорят военные, прием на снабжение IT Райффайзенбанка штатной децентрализованной платформы R-Chain. Теперь она предлагается как элемент клиентского обслуживания для корпоративных групп разного размера.

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

Содержание



Особенности корпоративных и межкорпоративных систем


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

  • У платформы должен быть оператор юридическое лицо, несущее перед участниками ответственность за её функционирование. Вариант каждый за себя, всё решит консенсус участников и прочее, характерное для публичных блокчейн-платформ, здесь не пройдет.
  • Использование платформы участником должно иметь достаточно простую юридическую обвязку, максимально близкую к существующему электронному документообороту. Поверьте, описание математических основ алгоритма консенсуса много-ранговой блокчейн-сети на 15 страницах это не то, что ожидают увидеть ваши юристы.
  • Система должна удовлетворять требованиям регуляторов и обычаям документооборота по криптографии, используемой для защиты данных и подтверждения юридической значимости действий. Например, предлагая свой продукт российским клиентам, вы не раз убедитесь, что после слов мы используем ГОСТ количество вопросов заказчика волшебным образом сокращается, а его желание использовать вашу платформу пропорционально возрастает.
  • Компоненты узла платформы, устанавливаемые у участника, должны хорошо ложиться в принятую в корпоративных системах сетевую сегментацию. Нахождение в ДМЗ коммерческой тайны или ключей ЭЦП, обеспечивающих юридическую значимость и всё.
  • Возможность форсмажорного изменения состояния сделок в нарушение заложенной ролевой модели. Не секрет, что в жизни что-то может пойти не так пути бизнеса подчас неисповедимы, а регуляторы и решения суда делают их еще более кучерявыми, причем нередко задним числом. И в один далеко не прекрасный момент сделка может оказаться в состоянии, из которого ее нельзя по ролевой модели перевести в состояние, предписанное судьбой для этого платформа должна предусматривать соответствующие механизмы, которые позволят установить сделку в нужное состояние при условии надлежащего консенсуса участников этой сделки.

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

Общая архитектура платформы


Архитектура программных компонентов


Приложения, использовавшиеся нами в исследовательский проектах 2016-2017 годов, были написаны на основе прямой интеграции диалоговых интерфейсов с техническими компонентами распределенной платформы geth и swarm. Но, проанализировав возможности и последствия такого подхода, мы пришли к выводу о необходимости введения между бизнес-бэкендом и техническими компонентами еще одного слоя адаптера унифицированных бизнес-объектов. Данный прием относится к достаточно стандартным шаблонам построения программной архитектуры, что, тем не менее, не снижает его эффективности. В результате, программная архитектура узла нашей платформы стала выглядеть примерно следующим образом:



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

Универсальный бизнес-процесс


Естественно встал вопрос, какими именно свойствами следует наделить универсальный бизнес-процесс, чтобы он обеспечивал, с одной стороны, максимальное использование преимуществ блокчейн-платформ, а с другой, максимальную гибкость и функциональность для применения в Бизнес-приложении. Дополнительным условием была возможность реализации выбранных свойств на большинстве из распространённых DLT-платформ, функциональные возможности которых в некоторых аспектах существенно отличаются (Ethereum/Quorum/Masterchain, Hyperledger Fabric, Corda, EOS, Waves). Базируясь на опыте своих и чужих проектов, мы пришли к следующим выводам.

Универсальный бизнес-процесс должен иметь следующий атрибутивный состав:

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

При этом платформа должна на уровне блокчейн-компоненты обеспечивать следующие условия распространения процесса в сети:

  • Полнота и целостность информации
  • Конфиденциальность электронных документов за пределами круга участников процесса
  • Контроль следования карте переходов процесса
  • Хранение истории изменения состояний процесса

Для реализации этих возможностей были разработаны рамочные смарт-контракты с соответствующими наборами свойств и методов.

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

Параметры процесса носят условно открытый характер, так как передаются непосредственно через смарт-контракт. Для некоторых блокчейн-платформ они являются принципиально публичными (Ethereum/Masterchain), для других могут быть закрыты штатными средствами обеспечения приватности данных (Quorum приватные смарт-контракты, Hyperledger Fabric каналы и приватные данные). Наверное, важнейшим из параметров ядра процесса в нашей реализации является вид процесса, так как он несёт не только смысловую, но и функциональную нагрузку в зависимости от вида процесса адаптер DLT выбирает шаблон смарт-контракта, которым данный процесс будет представляться. Зачем это нужно? Очевидно, что существует бесчисленное количество видов сделок и столь же многообразны бизнес-процессы, обеспечивающие их реализацию. В достаточно большом количестве случаев бизнес-процессы по сути отличаются только картой переходов (с точки зрения платформы) и могут быть реализованы одним единственным смарт-контрактом, поддерживающим произвольную карту переходов (об этом ниже). Но с конкретным бизнес-процессом могут быть связаны и достаточно уникальные моменты:

  • Обращения к оракулам (например, для сделок связанных с курсом валют)
  • Обращение к другим сделкам или к виртуальным счетам (например, для автоматического резервирования средств или проверки наличных остатков)
  • Контроль времени события (например, проверка срока подачи документов по аккредитиву или требования по гарантии)
  • и так далее

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

В число атрибутов ядра нашего процесса входят также статус и примечание: первое это кратное описание состояния процесса (New, Canceled, Closed, OnАpproval), второе длинная строка с более подробным описание к статусу. Мы ограничиваем длину примечания где-то до 1000 символов (например, Недостаточно средств на счете), так как для передачи значительных объемов информации (тем более конфиденциальной) предназначены электронные документы, прикрепляемые к процессу.

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

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

История изменения состояния процесса последовательность кадров, каждый из которых соответствует одной операции изменения состояния процесса. В нашей реализации мы храним для каждого кадра истории следующие данные:

  • статус
  • примечание
  • идентификатор инициатора транзакции изменения состояния

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

Обеспечение юридической значимости очень важный вопрос, отмеченный нами в разделе Особенности корпоративных и межкорпоративных систем. Мы изначально исходили из концепции, что юридическая значимость должна обеспечиваться не средствами блокчейн-платформы, а за счет использования внешнего PKI, имеющего регуляторную поддержку или соответствующий уровень доверия у участников платформы. Грубо говоря, электронный документ, обеспечивающий юридическое обоснование ваших действий (платежный документ, контракт, требование и так далее) и прилагаемый к процессу, должен быть подписан на базе кошерного PKI (в России ГОСТ, где-то за рубежом, например, SSL или PGP/GPG ). Бизнес-приложение проверит внешнюю подпись и выполнит соответствующее действие. Или не выполнит в зависимости от результата. Кто-то скажет, что это не по-евангелистски и надо убеждать юристов в юридической значимости блокчейн-транзакций. Мы прошли много шагов этого путешествия и результат всегда был один. Впрочем, в случае с Россией сертификация Мастерчейн открывает определенные возможности в этом плане как говорится Удачной охоты!

Преимущества использования универсального бизнес-процесса


Что же в итоге нам дал такой подход?

  • Расширение круга потенциальных разработчиков децентрализованных бизнес-приложений. Так как при предложенной зеркальной архитектуре от разработчика собственно бэкенд-приложения не требуется какой-либо работы непосредственно с децентрализованными компонентами, то появляется возможность привлечь к разработке без каких-либо ограничений самый широкий круг обычных разработчиков, знающих толк в необходимых продуктовых областях. Это значительно снижает сроки и стоимость разработки и повышает ее качество. В наших проектах из четырех разработчиков бэкендов трое вообще никогда ранее не работали с блокчейн-системами, а еще один имел опыт разработки на Corda, в то время как приложение работало через Зеркало с Ethereum, а затем с Quorum. С другой стороны, квалифицированные блокчейн-разработчики вместо рутинной работы по раз за разом выполняемой переделке упаковки бизнес-данных в блокчейн могут заняться действительно сложными вопросами связанными с развитием децентрализованных платформ.
  • Зонирование ошибок. Не секрет, что в сложных программных системах, а децентрализованные приложения мы можем, без сомнения, отнести к таковым, время от времени что-то идет не так. Если учесть, что многие из используемых децентрализованных компонентов крайне молоды и сыры (просто в силу этой молодости и условий своего создания), то риск этого что-то не так очень сильно возрастает. И ситуация, когда на глаза изумленного пользователя выплывает багровое сообщение Ваша транзакция ёк, потому что..., никого не радует. В случае разделения программных слоев на зеркало и бизнес-приложение, зеркало перенаправляет ошибки технологической части от конечного пользователя на техническую поддержку. Это снимает ненужную психологическую нагрузку с пользователя, которому достаются только бизнес-ошибки, соответствующие его пониманию и возможности исправления. Если пользователь надлежащим образом выполнил свою часть работы, то дальнейшая забота о правильной реализации бизнес-процессов переходит с его плеч на службу технической поддержки, располагающей соответствующими навыками и инструментами. При возникновении технологических проблем у поддержки имеется несколько десятков минут, а то и часов, на то, чтобы обнаружить и исправить ошибку, и если поддержка не забывает о своих обязанностях, то пользователь может так никогда и не узнать о том, что к нему стучались страшные insufficient funds for gas * price + value или gas required exceeds allowance or always failing transaction.
  • Возможность подкапотных модернизаций блокчейн-базиса. Отсутствие прямой зависимости бизнес-приложения от конкретной реализации блокчейн-базиса позволяет произвести необходимые изменения в этом базисе, не затрагивая само бизнес-приложение. А трудозатраты на бизнес-приложение, особенно с развитым диалоговым интерфейсом, может составить 75-95% от общих трудозатрат на программный комплекс. Разумеется, грамотный лид уже внутри приложения выделит интерфейсные классы и предпримет прочие меры обеспечения модульности, а подход лучше не пересобирать то, что еще работает жизнь не раз подтверждала. Таким образом, вы можете:

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

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

Недостатки использования универсального бизнес-процесса


Тут, наверное, как поется в известной песне Позади их слышен ропот... например, что чейн-код Hyperledger Fabric или Corda, в отличии от немного слишком изящного Solidity, позволяет реализовать практически беспредельно сложную логику бизнес-процессов, и такой подход профанирует их функциональные возможности. Таки-да, они будут совершенно правы. Ропщущим я напомню несколько достаточно известных посылов из области программной инженерии:

  • Где разводить бизнес-логику в хранимых процедурах БД или в коде бизнес-приложений?
  • Что лучше универсальная ЭВМ или спецвычислитель?
  • Вы уверены, что выбранный вами базис сохранит совместимость при последующих жизненных обновлениях? И вообще переживет следующие 2 года?

Ответ достаточно прост, если:

  • У вас куча денег, времени и свободных специалистов по блокчейн-технологиям
  • Вы уверены, что выбранный вами блокчейн-базис не придется менять от слова никогда
  • Вам действительно надо отжать возможности платформы на 101%

Ну, тогда спецвычислитель в смысле Hyperledger Fabric или Corda с зашивкой на чейнкод и прочим вырубанием долотом в камне. Если нет думайте сами

Мониторинг сети узлов


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

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

Исходя из вышесказанного с самого начала разработки нашей платформы в нее была встроена система проактивного мониторинга. Опишем принцип ее действия:

  • В блокчейн-базисе платформы устанавливается специальный смарт-контракт, отвечающий за сбор и распространения данных мониторинга (для краткости будем обозначать этот смарт-контракт как СКМ)
  • В составе узлов сети назначается один, а лучше несколько узлов Центрального мониторинга (ЦМ), ответственных за раздачу по сети зондирующих посылок, а также сбор и анализ мониторинговой информации, поступающей с других узлов. Этот функционал может быть как основным, так и использоваться в качестве нагрузки к бизнес-функционалу узлов.
  • Для блокчейн-базиса с заданной периодичность узлы ЦМ формируют зондирующие транзакции, переключающие соответствующий элемент СКМ в новое состояние это может быть просто метка текущего времени.
  • Для DFS-компоненты аналогичным образом формируется и передается контрольный файл, ссылка на который также заносится в СКМ.
  • Каждый из узлов сети периодически обращается к СКМ, извлекает контрольные данные и контрольный файл из DFS и проверяет актуальность контрольных меток.
  • Кроме того, каждый из узлов сети передает на СКМ информацию о своем состоянии, включая:
    > контрольную временную метку
    > последнее принятое значение зондирующей метки ЦМ по блокчейн-каналу
    > последнее принятое значение зондирующей метки ЦМ по каналу DFS
    > номер последнего обработанного блока блокчейн-канала (для Ethereum-семейства или аналогичный показатель)
    > наличие ошибок в очередях операций Зеркала
    > наличие задержек в очередях операций Зеркала то есть операций, не завершенных за определенное контрольное время
    > число операций в очередях операций Зеркала
    > наличие ошибок работы с базой данных со стороны Зеркала
    > контрольная информация от бизнес-приложений

При определенном значении или сочетании значений показателей мониторинга Зеркало автоматически приостанавливает обработку своих очередей операций, блокирует появление потенциальных нежелательных последствий, например:

  • При критическом отставании контрольной метки блокчейн-канала, что интерпретируется как выпадение узла из блокчейн-сети или полное нарушение ее функционирования
  • При критическом отставании контрольной метки DFS-канала, что интерпретируется как выпадение узла из DFS-сети или полное нарушение ее функционирования
  • При ошибках в очереди операций блокируются все последующие операции, связанные с этим бизнес-объектом (универсальным бизнес-процессом)

Отдельное внимание было уделено обработке ошибок базы данных, используемой Зеркалом. Данная БД используется не только как интерфейсная с бизнес-приложениями, но и как статусный стек для конечного автомата очередей операций Зеркала. Как показал опыт, при наличии специфичных ошибок при изменении данных в таблицах БД может произойти зацикливание операций с массовой повторной отправкой транзакций и прочими удовольствиями. Однажды мы из-за подобной ошибки за два дня сделали полугодовой объем цепочки на Quorum. Поэтому при обнаружении ошибки такого рода Зеркало полностью выключается и ждет ручного реагирования службы поддержки.

Узлы Центрального мониторинга извлекают из СКМ информацию от всех узлов сети (включая себя, кстати) и анализируют ее, позволяя своевременно обнаружить такие опасные или потенциально опасные состояния как, например:
  • Полное нарушение функционирования блокчейн- или DFS-сети
  • Выпадение отдельных узлов из блокчейн- или DFS-сети
  • Отставание отдельных узлов в обработке данных блокчейн-канала
  • Наличие ошибок в очередях обработки Зеркала
  • Наличие зависания операций и чрезмерного роста очередей в Зеркале

На картинке ниже пример простейшего монитора одной из наших тестовых сетей:



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

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

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

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

Эволюция использования различных технических компонентов


Рассмотрев общие условия развертывания и функционирования корпоративных децентрализованных сетей, а также архитектурные принципы, использованные нами при построении платформы R-Chain, перейдем теперь к рассказу о том, как и почему эволюционировали ее отдельные технические компоненты в процессе реализации конкретных проектов.

Первым был проект выпуска международной гарантии, в котором нашими партнерами были коллеги из Белоруссии март-декабрь 2018 года.

Начинали мы с конфигурации Ethereum Ethereum Swarm Крипто-Про (DLT-DFS-криптография), хорошо зарекомендовавшей себя в исследовательских проектах. Вместо использовавшейся публичной тестовой PoA-сети Ethereum Rinkeby была поднята приватная сеть Ethereum PoA и приватная сеть Ethereum Swarm. Каких-либо технических проблем изначально не выплыло, но мы столкнулись с криптографической неприятностью один из белорусских участников наотрез отказывался использовать предлагаемые нами средства криптографии, ссылаясь на локальный закон об электронном документообороте. Найти качественное решение в моменте тогда не удалось, но появилось устойчивое понимание о непростой и важной роли криптографии в успехе международных проектов.

Уже в процесс прогона контрольных сделок на реальной инфраструктуре сети (каждый участник развернул узел на своих ресурсах) были выявлены сбои в работе Ethereum Swarm потери файлов составляли на уровне 20%. Было сделано предположение, что потери связанны с проблемами, возникающими в клиенте Swarm при параллельной отправке нескольких файлов. В целом данное предположение подтвердилось: опытным путем удалось подобрать паузу между отправками в Swarm отдельных файлов в 5 секунд. При переходе к совсем боевой конфигурации сети, которая в силу особенностей примененного сетевого сегментирования в инфраструктуре Райффайзенбанка потребовала создания транзитного Swarm-узла, выявилась критическая проблема Ethereum Swarm допускал при работе через транзитный узел потерю до 30% файлов. Расслоенная архитектура и хорошая система мониторинга позволила успешно провести реальный выпуск гарантии в режиме ручной подкачки бензина, но судьба Ethereum Swarm была предрешена. Надо сказать, что заявленная способность Ethereum Swarm работать в топологиях с отсутствием прямой связи отправитель-получатель была одной из главных причин выбора его в качестве технологической основы DFS, и неспособность его надежно работать в таком режиме создала массу проблем.

Следует отметить, что приватная сеть на базе Ethereum в этом проекте порадовала своей восстанавливаемостью. График проекта предполагал, что закрытие выпущенной гарантии будет произведено через 3 месяца после ее выпуска, и на время этой паузы некоторые из участников остановили свои узлы. Тем не менее, при повторном запуске сеть без каких-либо танцев с бубнами за 1 день восстановила свою целостность, и операция закрытия гарантии прошла без каких-либо нареканий.

Следующим проектом стало создание внутригрупповой сети для Группы Компаний Аскона сентябрь 2018 текущее время.

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

  • При прикладывании файла к смарт-контракту некоего бизнес-процесса формируется событие DeliveryFile, содержащее ссылку на файл
  • В инфраструктуре оператора один или несколько узлов перехватывают события DeliveryFile и осуществляют выкачку указанного файла из IPFS. В силу особенностей организации IPFS узел, принявший к себе файл, сам становится точкой его раздачи. Аналогичную функцию могут взять на себя и узлы ведущих участников.
  • Если узел участника, желающий получить файл, не имеет доступа к исходному узлу, то он использует для получения файла транзитный узел оператора, с которым у него есть прямая связь

Таким образом, проект Аскона стартовал в конфигурации Ethereum IPFS Крипто-Про.

Использование Крипто-Про для шифрования файлов и внешней подписи юридически значимых документов обеспечили простоту юридической обвязки, а также отсутствие претензий со стороны подразделений Информационной Безопасности, что в свою очередь крайне положительно сказалось на сроках получения необходимых согласований как со стороны банка, так и со стороны компаний Группы Компаний Аскона. В целом проект развивался в рабочем порядке и пройдя пилотную стадию находился на финишной прямой выхода в прод и тут

и тут сразу в двух проектах условно чужих, но в которых мы участвовали как эксперты, на аналогичных конфигурациях словили мега-форки размером в тысячи блоков, с потерей транзакций части сети. Анализ логов и толковищ блокчейн-сообщества привел к неутешительному выводу использование Ethereum PoA (а в некоторых случаях даже и PoW) в компактных сетях с небольшим числом узлов (а корпоративные сети относятся именно сюда) имеет высокий риск появления таких монстров. К тому же в нашей тестовой сети стал периодически показываться загадочный баг, когда узел выпадал из сети и больше не хотел с ней синхронизироваться. Даже после переустановки Ethereum и полной зачистки. Короче, стало ясно, что для прод-сети нужна альтернатива для блокчейн-базиса. И быстро. Очень быстро.

Решением оказался Quorum практически, родной брат Ethereum. Число доработок в Зеркале было минимальным, бизнес-приложение, понятно, доработок вообще не требовало.

На текущий момент переход на Quorum принес только плюсы:

  • Использованный Raft-консенсус исключает форки
  • Отсутствие пустых блоков уменьшает размер цепочки

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

Единственным, пожалуй, неприятным свойством Quorum является возможность генерации при рестарте после длительной паузы мега-блока размером в несколько мегабайт, который просто заклинивает адаптер DLT при попытке разгрести его содержимое. Но, строго говоря, служба поддержки не должна спать настолько долго.

В итоге всей этой драматической эволюции мы пришли к конфигурации Quorum IPFS Крипто-ПРО, которую сейчас и используем на внутреннем рынке РФ.

Возможно, кто-то задаст закономерный вопрос: А что же, раньше вы про Quorum не слышали, что ли?. Слышали и про Quorum, и при Hyperledger Fabric, и про EOS. Автор данной статьи даже посещал первый воркшоп на русском языке по Corda осенью 2017 года. Наверное, специально для умного ответа на такие вопросы Гегель и придумал свою Диалектику. Начинавшая исследования в 2016 году небольшая команда имела хороший опыт разработки диалоговых приложений под Windows, а публичный Ethereum (тестовый понятно) имел наименьший порог входа из блокчейн-платформ. А так как мы были заинтересованы в проведении исследований именно по блокчейн-тематике, а не в ковырянии разных докеров, без которых запустить взрослые Quorum или Hyperledger Fabric просто нереально (да и не на всех виртуальных Windows-платформах возможно), то и выбор был очевиден. По мере того как результаты исследований стали привлекать внимание бизнес-подразделений банка и его партнеров, появилась возможность расширить команду, поручить сапоги сапожникам, а пироги пирожникам, разжиться Linux-серверами и так далее. И, естественно, никто не выбрасывал наработанные решения, пока они сохраняли потенциал развития. Диалектика и Эволюция.

Опыт исследования и эксплуатации корпоративных платформ и их дальнейшее развитие


Автор данной статьи принимал участие в достаточно большом числе блокчейн-проектов, проведенных в Райффайзенбанке, в Ассоциации ФинТех и кое-где еще и в качестве разработчика, и в качестве эксперта по децентрализованным платформам. Часть из них была чисто исследовательскими, часть завершилась пилотами, некоторые доросли до достаточно крупных промышленных сетей в несколько десятков узлов.

Какие же основные выводы можно сделать из всего этого опыта?

1. Существует определенное многообразие блокчейн-платформ, весьма сильно различающихся в своих потребительских качествах:

  • пороге входа и простоте разворачивания сети
  • пропускной способности
  • функциональных возможностях смарт-контрактов
  • возможностях закрытия информации
  • времени и стоимости разработки

Поэтому говорить о том, что какая-то из платформ окажется абсолютно доминирующей, я думаю, нельзя. У каждой есть свой круг потенциальных пользователей и задач, где ее использование наиболее рационально и рентабельно. Это касается и Ethereum, и Quorum, и Hyperledger Fabric, и Corda. Здесь как и с языками программирования только Вася и Петя, знающие по одному языку будут до одури спорить о том, что лучше плюсы или жаба. А Семен Петрович и Альберт Иванович, знающие их по десятку, будут мирно рассуждать когда лучше плюсы, а когда жаба.

2. Несмотря на то, что некоторые из DLT-платформ (например, Hyperledger Fabric и Corda) предоставляют возможность передачи больших элементов данных по сути файлов, скорее всего, блокчейн-базис с механизмами смарт-контрактов и функционал передачи файлов будет оставаться разделенным. Это связано со следующими моментами:

  • Специализированные децентрализованные файловые системы существуют дольше, лучше отлажены и на текущий момент эффективнее справляются с этой задачей по сравнению с аналогичным функционалом DLT-платформ. Мы проводили оценочные эксперименты. По их результатам при использовании Hyperledger Fabric и Corda файлы размером более 2M имеют высокую вероятность застрять в канале, в то время, как IPFS без проблем пробрасывает и 100M. А если ваш бизнес-кейс предполагает движение каких-либо неформализованных документов типа pdf (контрактов, договоров и прочее), то 50M минимум, к которому вам надо готовится.
  • Такой подход позволяет достаточно эффективно физически развести блокчейн-канал и канал передачи файлов, что весьма актуально для систем с высоким смешанным трафиком (транзакции + документы), тем более, что операционный приоритет транзакций обычно более высок.
  • В качестве альтернативы децентрализованным файловым системам неплохо смотрятся облачные файловые хранилища, например, стандарта S3. Они, конечно, несколько подрывают истинную децентрализованность, но с точки зрения безотказности вполне вписываются в распределенные сети, а по скорости обмена и надежности даже превосходят DFS. Тут возможно появление даже неких гибридных решений.
  • Если смотреть немного вдаль, на возможную интеграцию между собой отдельных корпоративных сетей, особенно построенных на разных блокчейн-базисах, то выделение файлового канала потенциально упрощает решение.

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

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

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

Перевод Ричард Столлман и будущее инноваций в ПО

03.11.2020 10:17:48 | Автор: admin
Проблема инноваций в ПО: из прошлого в настоящее

image

Давным-давно основным препятствием для инноваций в разработке ПО был доступ к компьютерам.

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

Такие люди как Ричард Столлман начали с этим бороться.

Ричард Столлман возглавляет движение Free Software Movement, которое показывает, как разработчики проприетарного ПО ограничивают свободу пользователей, а также выявляет слежку и манипулирование в таком ПО и проводит кампании, призывающие заменить проприетарное ПО свободным.

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

Ричард Столлман подчеркивает в своих работах, что переход ценности между потребителем и производителем должен распознаваться, оцениваться количественно и быть прозрачным, для того чтобы эффективно распределять ресурсы.

Ричард Столлман подчеркивает в своих работах, что переход ценности между потребителем и производителем должен распознаваться, оцениваться количественно и быть прозрачным, для того чтобы эффективно распределять ресурсы.

Идея хорошая, но реальность, к сожалению, оказалась не совсем такой, какой ее представлял Столлман.

Реальность: закрыт не только код, но и данные

К сожалению, движение за открытое ПО (пока) не победило. Даже несмотря на то, что open source, как индустрия сейчас больше, чем когда-либо, большая часть кода до сих пор закрыта из-за того, что создатель ПО может получить от экосистемы больший доход, запрещая свободное использование своего ПО.

К сожалению, движение за открытое ПО (пока) не победило. Даже несмотря на то, что open source, как индустрия сейчас больше, чем когда-либо, большая часть кода до сих пор закрыта из-за того, что создатель ПО может получить от экосистемы больший доход, запрещая свободное использование своего ПО.

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

Денис Назаров из Andreessen Horowitz в своей статье на тему Что придет после open source?, отметил, что переход от персональных инструментов ПО, работающих офлайн (например, Excel, Photoshop), к веб-сервисам (например, Spotify, Netflix, Uber, Instagram) привел к одному ключевому различию: в первом случае пользователи сами хранят собственные данные, а во втором веб-сервис хранит данные за пользователя. Это и привело к консолидации контроля в руках сервисов, которые аккумулировали данные их пользователей (например, базы данных, содержащие всю информацию о пользователях сервиса).

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

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

Это как маховик: чем больше данных у вас есть как у сервиса, тем ценнее вы в долгосрочной перспективе. Именно так Facebook-Amazon-Netflix-Google стали такими влиятельными компаниями.

2019: инновации мертвы?

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

Это также означает, что данные, хранящиеся в системах с закрытым состоянием, улучшают пользовательский опыт, помогая доминирующему сервису еще больше наращивать базу данных пользователей. На момент написания этого материала у меня на телефоне было установлено 11 приложений Google, 7 приложений Amazon и 4 приложения Facebook.

В потребительской сети как и в пространстве корпоративного ПО происходит очевидная централизация власти.

Бен Томпсон недавно указывал, что AWS, Azure и другие сервисы облачной инфраструктуры съедят open source компании живьем. Один из примеров MongoDB, но очевидно, что в будущем жертв будет гораздо больше. AWS и Azure съедят рынок инфраструктуры, а Salesforce, Workday и ServiceNow рынок приложений для бизнеса.

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

Итак, что мы имеем?

У нас есть потребительская сеть, находящаяся под контролем компаний, которые можно пересчитать по пальцам одной руки и у нас есть инфраструктурное облако, все больше контролируемое примерно таким же количеством вендоров.

С такой консолидацией, инновациям очень тяжело появиться вне этих компаний.

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

Выход

Появилась новая технология, которая расширит возможности для инноваций в ПО.

Что если мы возьмем идеи Ричарда Столлмана об открытом доступе к ПО и реализуем их? И пойдем еще дальше: что если мы также сделаем данные состояния открытыми и доступными для каждого веб-сервиса?

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

Представьте новый вид вычислений.

По определению Виталика Бутерина, этот вид вычислений децентрализован по архитектуре и политике, но централизован логически.

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

В чем заключаются преимущества такого децентрализованного компьютера?

  1. Пользователи могут видеть исходный код, который выполняется на бэкенде;
  2. Все публичные данные находятся в открытом доступе для всех;
  3. Все публичные данные находятся в открытом доступе для всех;


Назовем это последнее свойство компaнуемостью сервисов.

Компaнуемость?

Если мы возьмем подход Ричарда Столлмана к открытому ПО и применим его к открытым сервисам, мир изменится до неузнаваемости.

Если мы возьмем подход Ричарда Столлмана к открытому ПО и применим его к открытым сервисам, мир изменится до неузнаваемости.

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

Давайте посмотрим, как это может работать.

Пример 1: открытые сервисы в борьбе с цензурой

Представьте водителя, который совершил 100 поездок на Uber и получил блестящую репутацию. Представьте сценарий, в котором Uber цензурирует водителя из-за ложной жалобы, в процессе полностью удаляя данные о их репутации.

Если бы существовал OpenUber, который бы был построен на открытых данных, так чтобы сервис мог общаться с другими аналогичными сервисами, этот водитель мог бы перенести свою репутацию в OpenLyft, OpenInstacart, OpenDoorDash и другие веб-сервисы, доступные без дополнительной регистрации, KYC или, что более важно, без какого-либо риска потери репутации. Это позволяет всем сервисам быть интероперабельными и использоваться повторно для других интерфейсов и бизнесов, делая репутацию пользователей тоже портативной. Это также защищает пользователей от субъективного цензурирования.

image

Пример 2: Открытые данные для улучшения опыта пользователя

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

Например, я предоставляю данные о своих покупках на OpenAmazon сервису OpenNike.com и таким образом позволяю OpenNike.com кастомизировать мой опыт покупки обуви, основываясь на истории прошлых покупок обуви, которая доступна на OpenAmazon.

В таком мире данными владею я, а не корпорация, с которой я работаю. Я предоставляю доступ к данным в обмен на дифференцированный пользовательский опыт. Это мое решение, а не корпорации.

image

Заключение

Звучит как будущее, частью которого я бы очень хотел стать.

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

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

Есть несколько проектов, которые работают над созданием будущего, описанного в этой статье. Solid под руководством Тима Бернерса Ли из MIT строит много фундаментальных вещей. Другой пример NEAR, который создает инфраструктуру для приложений с открытым состоянием и позволяет сделать такие приложения простыми в разработке, использовании и чтобы при этом у них были рабочие бизнес-модели.

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

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

Присоединяйтесь к экосистеме NEAR и будем строить открытый интернет вместе!
Подробнее..

Как мы строили компанию в Кремниевой долине

18.09.2020 10:20:14 | Автор: admin
Вид на Сан-Франциско с восточной стороны заливаВид на Сан-Франциско с восточной стороны залива

Привет Хабр,

В этом посте я расскажу о том, как мы строили компанию в кремниевой долине. За четыре года мы прошли путь от стартапа из двух человек в подвале одного из зданий в Сан-Франциско до большой узнаваемой компании с инвестициями в более чем $30M от известных фондов, включая таких гигантов, как a16z.

Под катом много интересных историй про Y Combinator, венчурные инвестиции, поиск команды, и другие аспекты жизни и работы в долине.

Предыстория

Я приехал в долину в 2011 году, где присоединился к компании MemSQL, которая только выпустилась из Y Combinator. В MemSQL я был первым сотрудником. Мы работали из трёхкомнатной квартиры в городе Менло-Парк, в которой и жили (в одной комнате я с супругой, в другой CEO с супругой, а CTO компании Никита Шамгунов спал на диване в зале). Время текло, MemSQL сегодня это большая enterprise компания с сотнями сотрудников, многомиллионными сделками и офисом в центре Сан-Франциско.

В 2016 году я понял, что компания меня переросла, и решил, что пора начинать что-то новое. Еще не решив, что делать дальше, я сидел в кофейне в Сан-Франциско и читал какую-то статью того года по машинному обучению. Ко мне подсел другой молодой человек и сказал я заметил, ты про машинку читаешь, давай знакомиться. Такие ситуации в Сан-Франциско обычное дело. Большинство людей в кофейнях, в ресторанах и на улице сотрудники стартапов или больших технологических компаний, поэтому вероятность так вот с кем-то познакомиться очень высокая. Через ещё две встречи с этим молодым человеком в кофейне мы решили начать строить компанию, которая строит умных помощников. Samsung только что купил VIV, Google анонсировал Google Assistant, и казалось, что будущее где-то в этом направлении.

В качестве ещё одного примера того, как много людей в СФ работают в области ИТ, спустя неделю или две с этим же молодым человеком мы сидели в той же кофейне, и я делал какие-то изменения в наш будущий сайт, а ему было нечем заняться. Он просто повернулся к случайному молодому человеку, сидящему через стол от нас, и сказал а ты машинкой занимаешься?, на что тот молодой человек удивленно ответил да, как ты знаешь?

В октябре 2016 года мы решили начать поднимать венчурные инвестиции. Я предполагал, что попасть на встречу с топовыми инвесторами очень сложно. Оказалось, что это совершенно не так. Если у инвестора есть хотя бы минимальное подозрение, что компания может взлететь, они с радостью потратят час своего времени на общение. Большой шанс потратить час на бесперспективную компанию намного лучше, чем маленький шанс пропустить следующего единорога. Тот факт, что я был первым сотрудником MemSQL позволил нам получить в календаре встречи с шестью очень крутыми инвесторами в долине за неделю работы. Мы были окрылены. Но с той же лёгкостью, с которой мы эти встречи получили, мы эти встречи провалили. Инвесторы встречаются с такими командами как мы по несколько раз в день и умеют за минимальное время понять, что ребята перед ними не имеют ни малейшего представления, что они делают.

Заявка в Y Combinator

Нам нужно было подтянуть наши навыки в строительстве компании. Строить компанию это не код писать. Это понимать, что нужно людям, проводить user studies, прототипировать, правильно решать, когда пивотиться, а когда продолжать, найти product-market-fit. Как раз в это время проходил набор в Y Combinator Winter 2017. Y Combinator это самый престижный акселератор в Кремниевой долине, через который прошли такие гиганты, как Dropbox, Reddit, Airbnb, даже MemSQL. Критерии Y Combinator и венчурных инвесторов очень схожи: им надо из большого числа компаний в Кремниевой долине выбрать небольшое количество и максимизировать шанс поймать следующего единорога. Чтобы попасть в Y Combinator, надо заполнить анкету. Анкета отсекает примерно 97% заявок, поэтому её заполнение это невероятно ответственный процесс. После анкеты проходит интервью, которое отсекает половину из оставшихся компаний.

Мы потратили неделю на заполнение анкеты, перезаполнение, чтение с друзьями, чтение ещё раз, перезаполнение опять. В итоге спустя пару недель мы получили приглашение на интервью. В 3% попали, осталось попасть в 1.5%. Интервью проходит в головном офисе YC в Маунтин-Вью (это 40 минут на машине от СФ) и длится 10 минут. Вопросы задаются примерно одни и те же и хорошо известны. Есть сайты в интернете, где засекается таймер на 10 минут и рандомно выбираются вопросы из известной методички и показываются. Мы по этим сайтам занимались каждый день часами, попросили несколько наших друзей, кто прошли через YC в прошлом, поинтервьюировать нас тоже. В общем подошли серьезнее, чем мы подходили к встречам с инвесторами за месяц до этого.

День интервью был очень интересный. Наше интервью было около 10 утра. Мы приехали заранее. Для меня день интервью представлял определенную проблему. Так как моя компания пока явно не взлетала, я диверсифицировал свои инвестиции времени, начав испытательный срок в компании OpenAI. Один из сооснователей OpenAI, Сэм Альтман, по совместительству являлся президентом Y Combinator. Если я попаду к нему на интервью и он в моей заявке увидит OpenAI, нет ни малейшего сомнения, что он спросит о моих успехах на моем испытательном сроке у моего менеджера. Если я затем не попаду в Y Combinator, то мой испытательный срок в OpenAI тоже окажется под большим вопросом.

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

Если Y Combinator принимает компанию, они звонят в тот же день. Если отвергают, то пишут email на следующий день с развернутым объяснением почему. Соответственно, если до вечера звонка не поступило, значит не повезло. А если позвонили, то, не снимая трубки, можно знать, что нас взяли. Интервью мы прошли с лёгкостью, все вопросы оказались из методички. Вышли воодушевлённые, поехали в СФ. Прошло полчаса, мы были в десяти минутах от города, как нам позвонили.

Попасть в Y Combinator это мечта почти каждого человека, который строит компанию в Кремниевой долине. Тот момент, когда позвонил телефон, входит в топ 3 самых запоминающихся моментов в моей карьере. Забегая вперед, второй из трёх случится в этот же день спустя всего несколько часов.

Девушка на том конце совсем не спешила радовать нас новостями о нашем приёме. Она сообщила нам, что им нужно провести второе интервью. Это редкое событие, но в интернете о нём тоже было написано. Что интересно, по статистике среди компаний, которые вызвали на второе интервью, принимают те же самые 50%, то есть тот факт, что нам надо возвращаться, даёт нем 0 новой информации о том, попадём мы в YC или нет.

Развернулись, приехали назад. Подошли к комнате. Сэм Альтман. Не повезло

Я написал своему менеджеру в OpenAI в слэк, что так и так, я сегодня в Y Combinator прохожу интервью, тебе наверняка напишет Сэм, не удивляйся. Прошло все ОК, моему менеджеру в OpenAI, кажется, не могло быть более фиолетово.

Второе интервью длилось пять минут, задали пару вопросов, отпустили нас. Такого же ощущения, что мы разнесли их, не было. Казалось, что на интервью просто ничего не произошло. Поехали в СФ, менее воодушевлённые в этот раз. Через 30 минут опять позвонили. В этот раз уже чтобы сообщить, что мы приняты.

Y Combinator

Опыт в Y Combinator был очень полезный и интересный. Раз в неделю, по вторникам, нужно было ездить в их головной офис в Маунтин-Вью, где мы сидели небольшими группами с опытными ребятами и делились с ними нашим прогрессом и проблемами, а они обсуждали с нами возможные решения. В конце каждого вторника во время ужина выступали разные успешные предприниматели и рассказывали про свой опыт. На последнем ужине выступали создатели Whatsapp, было очень захватывающе.

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

Помимо этого был поднят портал, на котором мы могли в любой момент создавать встречи с разными умными ребятами, у которых опыт в самых разных областях строительства компаний: продажи, маркетинг, user studies, дизайн, UX. Мы этим пользовались достаточно много и набрались кучи опыта. Почти всегда эти ребята находились в СФ, поэтому даже не надо было далеко ехать. Часто даже не нужна была машина.

Поиск ещё одного сооснователя

Вдвоем компанию не поднять. Но у нас есть $150K, которые YC дает в начале программы. Надо найти людей. Учитывая, что мы едва сами знаем, что мы пишем, искать сотрудников пока что дело гиблое, но, может, мы найдем ещё человека, который хочет быть с нами сооснователем? В ВУЗе я занимался ACM ICPC, и многие из людей, кто в моём поколении им занимались, сейчас имели успешные карьеры в долине. Я начал писать своим старым друзьям, которые теперь жили в СФ. И долина не была бы долиной, если бы за первые пять сообщений я бы не нашёл кого-то, кто хочет строить компанию. Супруга одного из моих друзей с поездок на ICPC строила очень успешную карьеру в Facebook, но рассматривала вариант уйти и начать компанию. Мы с ней встретились. Она уже тоже была в активном поиске сооснователей и познакомила меня с её другом Ильёй Полосухиным. Илья был одним из инженеров в команде, которая строила TensorFlow. Спустя несколько встреч девушка решила остаться в Facebook, а Илья пришёл к нам в компанию третьим основателем.

Начало NEAR

После YC поднимать венчурные инвестиции немного проще. В последние дни программы Y Combinator организует Demo Day, где мы презентуем перед 100 инвесторами. YC построили систему, в которой инвесторы выражают интерес к нам прямо во время презентации, а мы к ним в конце дня, а потом там строится взвешенное паросочетание и мы с ними встречаемся. Мы подняли $400K, я и Илья в этом процессе не были очень вовлечены, мы писали код, поэтому много интересных историй рассказать не могу. Но одна есть.

В качестве маркетинга мы проводили в Сан-Франциско встречи по машинному обучению с топовыми исследователями (многие из которых работают в Google Brain, OpenAI, учатся в Стэнфорде или Беркли, и поэтому находятся географически тут же в долине) и строили локальное сообщество. На одной из таких встреч мы убедили одного из абсолютно топовых исследователей в области быть нашим advisor. Мы уже почти подписали документы, когда через неделю он понял, что его текущая компания не позволяет ему быть advisorом. Но он чувствовал, что он нас подводит, и поэтому предложил вместо того, чтобы эдвайзить, в нас просто инвестировать. Сумма в масштабе компании была небольшой, но получить топового исследователя в области не просто как эдвайзера, но как инвестора, это было очень круто.

Это уже был июнь 2017, Google Pixel вышел и был популярен. В отличие, к сожалению, от встроенного в него Google Assistant. Я брал у друзей Пиксели, зажимал home button и в 10 случаях из 10 видел настройте Google Assistant перед первым использованием. Samsung никак купленный VIV не использовал, а выпустил вместо этого Bixby с хардварной кнопкой, и в Samsung Store стали популярны приложения, которые заменяли Bixby на фонарик.

На фоне всего этого наша с Ильёй вера в будущее ассистентов погасла, и мы покинули ту компанию. Мы сразу основали новую компанию Near Inc, потеряв в процессе бейджик Y Combinator на компании, $400K и топового исследователя как инвестора.

В тот момент нам обоим была очень интересна тема program synthesis когда модельки сами пишут (или дописывают) код. Мы решили закопаться в тему. Но совсем без денег тоже нельзя, поэтому сначала нужно восполнить потерянные $400K.

Венчурные инвестиции

К тому моменту между графами знакомств меня и Ильи почти все инвесторы в долине были в одном или двух рукопожатиях, поэтому, как и в первый раз, получить встречи было очень легко. Первые встречи шли очень неудачно, и мы получили несколько отказов. Как я узнаю за этот и следующие 2 фандрейза, в которых я буду участвовать, до первого ДА от инвесторов надо получить десятки НЕТ. После первого ДА следующее ДА приходит в следующие 3-5 встреч. Как только есть два-три ДА, НЕТ уже больше почти не бывает, и становится проблемой выбрать из всех ДА, кого же взять.

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

Х познакомил нас с рядом других инвесторов. Инвесторы не любят инвестировать в одиночку, они любят инвестировать с другими. Наличие других инвесторов повышает вероятность, что они не допускают ошибку (ведь кто-то ещё думает, что это хорошая инвестиция), и повышает шансы компании выжить. Проблема в том, что если Х познакомил нас с Y, Y после этого не инвестирует без Х, потому что это будет плевок Х в лицо, а им ещё часто иметь дело друг с другом. Второе ДА после этих знакомств поступило сравнительно скоро, а затем и третье, и четвёртое. Проблема была в том, что Х хотел выжать из нас все соки и дать деньги под самые невыгодные условия, а другие инвесторы, которые узнали о нас от Х, может и были бы готовы инвестировать в нас на лучших условиях, но не будут делать это за спиной Х.

В одно солнечное утро в Сан-Франциско я получил письмо от Никиты Шамгунова, уже тогда CEO MemSQL, Introducing Alex (NEAR) to Amplify Partners. Спустя буквально 17 минут совершенно независимо и по чистому совпадению приходит письмо от X с точно таким же заголовком. Ребята из Amplify оказались невероятно крутыми. Условия, которые нам предлагали Х, казались им драконовскими, и они были готовы инвестировать в нас на разумных условиях. Ряд инвесторов был готов инвестировать вместе с Amplify. В таких условиях мы отказались от инвестиции Х и подняли раунд с Amplify в качестве главного инвестора. Amplify тоже не был рад инвестировать в обход X, но так как первое интро пришло от Никиты, а не от Х, общий язык между всеми нашёлся, и никто ни на кого в обиде не остался. Если бы Никита в тот день прислал письмо на 18 минут позже, всё могло бы быть немного сложнее.

У нас теперь было $800K, чтобы существовать, и начался год, полный хардкорных моделек на PyTorch, общения с десятками компаний в долине, чтобы понять, где на практике можно было бы применять program synthesis, и других не очень интересных приключений. К июлю 2018 у нас был какой-то прогресс по моделькам и несколько статей на NIPS и ICLR, но не было понимания, где модели достижимого на то время уровня могли быть применены на практике.

Первое знакомство с блокчейн

Мир блокчейна это очень странный мир. Я его достаточно целенаправленно избегал долгое время, но в итоге наши пути пересеклись. В поисках применения program synthesis мы в итоге пришли к тому, что что-то на пересечении program synthesis и смежной темы formal verification может быть очень полезно для смарт-контрактов. Мы ничего не знали про блокчейн, но долина не была бы долиной, если бы среди моих старых друзей там не нашлось хотя бы нескольких, кто этой темой интересовался. Мы начали с ними общаться и поняли, что formal verification это хорошо, но в блокчейне есть проблемы более насущные. В 2018 году Ethereum уже справлялся с нагрузкой достаточно тяжело, и разработать протокол, который работал бы значительно быстрее, было очень насущной проблемой.

Мы, конечно, далеко не первые, кому такая идея пришла в голову, но быстрое изучение рынка показало, что в то время как конкуренция там есть, и высокая, выиграть его можно. Что важнее, и я, и Илья очень хорошие системные программисты. Моя карьера в MemSQL была, разумеется, гораздо ближе к разработке протоколов, чем строительству моделек на PyTorch, а Илья в Google был одним из разработчиков TensorFlow.

Я начал обсуждать эту идею со своими бывшими коллегами по MemSQL и моим сокомандником со времен ICPC, и идея строить быстрый блокчейн протокол оказалась интересна четырём из пяти людей, с кем я пообщался. За один день в августе 2018 года NEAR вырос с трёх человек до семи и до девяти в течение следующей недели, когда мы наняли head of operations и head of business development. При этом уровень людей был просто невероятным. Все инженеры были либо из ранней команды MemSQL, либо проработали по многу лет в Google и Facebook. Трое из нас имели золотые медали ICPC. Один из семи первых инженеров выиграл ICPC дважды. На тот момент дважды чемпионов в мире было шесть (сегодня количество дважды чемпионов в мире уже девять, но теперь два из них работают в NEAR, так что статистика со временем улучшилась).

Это был взрывной рост, но была проблема. Никто не работал бесплатно, и офис в центре СФ тоже далеко не дешёвый, и покрывать аренду офиса и зарплаты уровня долины девяти людям, имея то, что осталось от $800K спустя год было проблематично. NEAR осталось существовать 1.5 месяца, прежде чем в банке останется ноль.

Снова венчурные инвестиции

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

Metastable топовый фонд, и получить ДА от них значило бы закрыть раунд почти сразу. Мы уже к тому времени набрали 3-4 НЕТ, и количество фондов, с кем можно пообщаться, быстро сокращалось, как и время до того, как NEAR останется без средств к существованию. В Metastable работало несколько невероятно умных ребят, задача которых была разнести наши идеи в щепку и найти минимальные неточности в нашем дизайне. Так как нашему дизайну в то время было несколько дней, как и нашему опыту в блокчейне на тот момент, на митинге с Metastable они нас с Ильей уничтожили. Количество НЕТ в копилке увеличилось еще на один.

В следующие пару недель работа перед доской продолжалась, и дизайн начал собираться во что-то серьёзное. Мы, несомненно, поторопились с нашей встречей с Metastable. Если бы встреча прошла сейчас, уничтожить нас так легко бы не получилось. Но Metastable не встретится с нами спустя всего две недели. Что же делать?

Решение нашлось. По случаю дня рождения Илья устроил шашлыки на крыше своего дома (которая, как и многие крыши в квартирных комплексах в СФ, представляла из себя ухоженный парк), куда были приглашены все сотрудники NEAR и друзья, включая Ивана Богатого друга Ильи, который работал в Metastable в тот момент, а также некоторые другие инвесторы. В отличие от презентации инвесторам в комнате для совещаний, на шашлыках вся команда из NEAR могла пообщаться в простой обстановке с пивом в руках с Иваном и другими инвесторами о нашем текущем дизайне и целях. К концу шашлыков Иван подошел к нам и сказал, что, кажется, нам есть смысл встретиться ещё раз.

Эта встреча прошла намного лучше, и мы с Ильёй смогли защитить дизайн от коварных вопросов. Metastable позвали нас встретиться с её основателем Навалом Равикантом спустя пару дней в офисе компании Angellist. В офисе было абсолютно пусто, потому что компания почти всем составом уехала на Burning Man. На этой встрече НЕТ превратилось в ДА, и NEAR больше не была в шаге от смерти. Митинг закончился, мы сели в лифт. Новости о том, что Metastable в нас инвестирует, разлетелись очень быстро. Лифт еще не доехал до первого этажа, когда на нашу почту без какого-либо участия с нашей стороны прилетело второе ДА, тоже от топового фонда. Больше НЕТ в том фандрейзе не было, и через неделю мы опять решали задачу о рюкзаке, чтобы вместить самые лучшие предложения в ограниченный раунд.

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

Скорость не самая большая проблема

В конце 2018 года мы пошли на хакатон ETH San Francisco. Это один из множества хакатонов по всему миру, посвященных Ethereum. На хакатоне у нас была большая команда, которая хотела построить первую версию моста между NEAR и Эфиром.

Я от команды отделился и решил пойти другим путём. Я нашёл глазами Влада Замфира, известного инфлюенсера в экосистеме, который писал свою версию шардинга для Ethereum, подошел к нему и сказал "Привет, Влад, я писал шардинг в MemSQL, давай участвовать в одной команде". Влад был с девушкой, и на его лице ясно читалось, что я выбрал не самое лучше время для общения. Но девушка сказала "это звучит круто, Влад, тебе нужно взять его в команду". Так я оказался в команде с Владом Замфиром, и следующие 24 часа узнавал о том, как работает его дизайн, и писал вместе с ним прототип.

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

По итогам этого хакатона и огромного количества user-studies, которые за ним последовали, мы поняли, что самая большая проблема блокчейнов это не их скорость. Самая большая проблема это то, что приложения на блокчейн ужасно сложно писать и ещё сложнее использовать конечным пользователям. Наш фокус в 2019 году расширился, мы привели людей, разбирающихся в user experience, собрали команду, чей фокус исключительно developer experience, и сделали основным фокусом удобность для разработчиков и пользователей.

Строим узнаваемость

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

Мы только начинали, а у наших конкурентов уже были большие фан-базы. А есть ли способ как-то достучаться до этих фан-баз, чтобы все оказались в плюсе? Мы сидели небольшой компанией в кофейне Red Door в Сан-Франциско утром когда в голову пришла феноменальная идея. В мире, где десятки протоколов конкурируют за то, чтобы быть the next big thing, реально у людей нет никакого источника информации об этих протоколах, кроме их собственных маркетинговых материалов. Было бы здорово, если бы кто-то достаточно умный встал с исследователями и разработчиками таких протоколов перед доской и разносил их. Такие видео хороши для всех. Для них (если их не разнесут), потому что их сообщество может видеть, что их дизайн не трава. Для нас возможность быть замеченными их сообществом, а ещё возможность узнать хорошие идеи. Почти все протоколы, включая NEAR, разрабатываются открыто, поэтому идеи и код в целом не скрываются, но найти эти идеи иногда сложно. За один час перед доской с умным человеком можно научиться очень многому.

Долина в очередной раз оказалась полезной. NEAR далеко не единственный протокол, у которого есть офис в СФ, и идея записать такие видео была встречена разработчиками других протоколов с огромным энтузиазмом. Мы быстро положили в календарь первые встречи для записи видео с ребятами, которые тоже географически были в СФ, и на сегодня таких видео уже почти сорок.

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

Дальнейшая история

Команда росла, и в жизни стартапа самое важное это иметь достаточно финансов, чтобы поддерживать рост. Третий фандрейзинг тоже начался удачно не сразу, мы получили несколько НЕТ, но одно ДА опять перевернуло всё с ног на голову, и мы быстро его закрыли. Четвёртый фандрейзинг в начале этого года начался с ДА почти сразу, мы получили финансирование от Andreessen Horowitz, самого топового фонда как в принципе, так и в области блокчейнов, и имея a16z как инвестора раунд закрылся очень быстро. В последнем раунде мы подняли $21.6M.

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

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

Разработка на этом не заканчивается. Протокол имеет встроенный механизм перехода на новые версии, и впереди ещё много работы.

В заключение

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

Небольшой список ресурсов для тех, кто хочет закопаться глубже уже сейчас:

1. Посмотреть как выглядит разработка под NEAR, и поэкспериментировать в онлайн-IDE можно здесь: https://examples.near.org.

2. Код протокола открыт, его можно поковырять лопаткой тут: https://github.com/nearprotocol/nearcore

3. Если вы хотите запустить свою ноду в сети и помочь её децентрализации, можно присоединиться к программе Stake Wars. Есть русскоговорящее телеграм сообщество, где люди прошли через программу и запустили ноды и могут помочь в процессе.

4. Обширная документация для разработчиков на английском доступна здесь: https://docs.near.org.

5. Следить за всеми новостями на русском можно в уже упомянутой группе в телеграме, и в группе на ВКонтакте

Наконец, позавчера мы запустили онлайн хакатон с призовым фондом в $50K, на котором предлагается написать интересные приложения, которые используют мост между NEAR и Ethereum. Больше информации (на английском) здесь: https://near.org/rainbow/

До скорых встреч!

Подробнее..

Внедряем оплату BTC куда угодно (Python)

05.11.2020 18:21:17 | Автор: admin

Предыстория

Полгода назад взялся за один проект с возможностью оплаты биткойном. Так как проект делали на языке python, то и оплату хотелось реализовать на нем же. Сразу же взялся анализировать готовые решения, доступные библиотеки и Rest API Blockchain.com. С апи блокчейна я моментально обломался, так как их токен для использования апи довольно не просто получить.

Затем решил юзать различные библиотеки (block-io, bitcoinlib, blockchain и др.) После пару ночей попыток реализовать нормальную оплату, остановился на bitcoinlib, так как она более менее стабильно работала, и я спокойно переводил с одного кошелька на другой. Беда наступила когда появились первые 100 пользователей и вся оплата внезапно рухнула. Возможно я криво написал или что-то не так понял с работой библиотеки, но любые попытки восстановить работу оплаты были безуспешны, только если обнулять бдшку, но и так неизвестно сколько бы она продержалась.

В итоге решили оставить без BTC оплаты. Я опечалился и не связывался с оплатой биткойном полгода.

К чему я пришел

На днях я все-таки решил добить этот вопрос для себя, надеюсь кому-то еще пригодятся мои наработки.

Все начинается с seed фразы. Мнемоническаяфраза(англ. Mnemonic phrase илиSeed фраза) - это список слов, которые хранят всю информацию, необходимую для восстановления биткоин-кошелька. Существуют несколько стандартов генерации фраз BIP 32, BIP 39, BIP 44, и еще BIP 49. Самый распространенный - это BIP 44 (12 слов).

Пример seed фразы:

vivid area able second bicycle advance demand alpha flip stable drift route

Чтобы сгенерировать фразу будем использовать библиотеку bipwallet. Чтобы ее установить воспользуемся командой pip install bipwallet.

from bipwallet import wallet# generate 12 word mnemonic seedseed = wallet.generate_mnemonic()print(seed)

Если мы хотим получить напрямую доступ к биткойн кошельку, то, зная фразу, можем сразу восставновить кошелек в blockhain.com:

https://login.blockchain.com/#/recover

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

Чтобы во всем не запутаться и знать какие данные мы должны получить, я использовал сайт https://iancoleman.io/bip39/

Генерация дочернего адреса кошелька для каждого пользователя:

Чтобы получить наш нулевой адрес Биткойн кошелька на основе seed фразы (12VeK1eRgPHRUikNLXq3Nuz99gS2S46QMD), нам нужно пройти всю цепочку преобразований. Методом проб и ошибок мне все-таки удалось получить адрес кошелька следующим кодом:

from bipwallet.utils import *def gen_address(index):    # Наша seed фраза    seed = 'vivid area able second bicycle advance demand alpha flip stable drift route'    # Мастер ключ из seed фразы    master_key = HDPrivateKey.master_key_from_mnemonic(seed)    # Public key из мастер ключа по пути 'm/44/0/0/0'    root_keys = HDKey.from_path(master_key, "m/44'/0'/0'/0")[-1].public_key.to_b58check()    # Extended public key    xpublic_key = str(root_keys, encoding="utf-8")    # Адрес дочернего кошелька в зависимости от значения index    address = Wallet.deserialize(xpublic_key, network='BTC').get_child(index, is_prime=False).to_address()    rootkeys_wif = HDKey.from_path(master_key, f"m/44'/0'/0'/0/{index}")[-1]    # Extended private key    xprivatekey = str(rootkeys_wif.to_b58check(), encoding="utf-8")    # Wallet import format    wif = Wallet.deserialize(xprivatekey, network='BTC').export_to_wif()    return address, str(wif, 'utf-8')print(gen_address(0))

Данная функция возвращает адрес кошелька и wif в зависимости номера. Максимальное число с которым удалось получить адрес это 999999999.

wif (Wallet import format) - это просто кодирование байтов ключа в кодировку Base58 + контрольная сумма. Он нам понадобится в дальнейшем при генерации транзакции.

Это все значит, что имея только одну seed фразу мы можем создать 1 млрд дочерних адресов. Каждому пользователю при регистрации мы будем выдавать новый адрес, через который он сможет оплачивать по BTC. Появляется ограничение на 1 млрд пользователей, но нам никто не запрещает использовать несколько seed фраз или генерировать каждому юзеру новую фразу, но тогда каждая оплата будет кидаться не в общий ваш кошелек, а по разным.

Проверка баланса и транзакции:

Теперь когда у каждого пользователя свой личный адрес биткойн кошелька, нужно проверить баланс этого адреса. Для этого мы будем обращаться к сайту Blockchain.com дабы получить нужную информацию.

import requests# Адрес кошелька пользователя wallet = '12VeK1eRgPHRUikNLXq3Nuz99gS2S46QMD'# wallet = gen_address(0)url = f'https://blockchain.info/rawaddr/{wallet}'x = requests.get(url)wallet = x.json()print('Итоговый баланс:'+str(wallet['final_balance']))print('Транзакции:'+str(wallet['txs']))if wallet['total_received']==0:  print('баланс пустой')

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

Транзакции

На данном этапе мы дали каждому пользователю свой адрес кошелька и знаем все транзакции с данным адресом, но этого недостаточно. Нам нужно чтобы мы могли отправить его же деньги обратно. Для этого воспользуемся библотекой bit. Чтобы ее установить воспользуемся командой pip install bit.

from bit import PrivateKey# Приватный ключ из wifmy_key = PrivateKey(wif='L46ixenNSu8Bqk899ZrH8Y96t8DHqJ1ZyxzQBGFTbh38rLHLaPoY')# Количество долларов перевода, можно поменять на btcmoney=0.1# Кошелек куда будут переведены деньгиwallet='17ya3bCpPioyPH8kAyFkEDBUqdjF6wwPxo'# Коммисия перевода, если поставить слишком маленькую, то транзакцию не примут# И чем больше коммисия, тем быстрее пройдет переводfee=2000# Генерация транзакцииtx_hash = my_key.create_transaction([(wallet, money, 'usd')],fee=fee,absolute_fee=True)print(tx_hash)

В итоге мы получили вот такую транзакцию:

0100000001fe64490fce5e85d5eb00865663a3d44f4108549fdb2840b086cfc781390d4a2d010000006a47304402202dc1496d28bb10d50d94d70870e2a79ea472c5960de8f7418bb30f9b96643efc02204691547c98edad3181a056bf6404601efe289200ba8e3073a2f5b7c0c7f4fec10121026516c551584b484ce3ca7bb71bbf24cce133bf40bdf4e2ce5a3936bc7e66a2abffffffff02e3020000000000001976a9144c83a20250ccb62ce2b3b1ea80c6082b634fdf9f88ac08f40200000000001976a9144c83a20250ccb62ce2b3b1ea80c6082b634fdf9f88ac00000000

Выглядит красиво, но что с этим делать?

Можно зайти на сайт https://www.blockchain.com/btc/pushtx

и вручную отправить эту транзакцию.

Также можем декодировать эту транзакцию и проверить все ли верно мы указали https://www.blockchain.com/btc/decode-tx

Но нам нужно это автоматизировать, поэтому напишем несколько строк:

import requestsurl = 'https://blockchain.info/pushtx'tx='0100000001fe64490fce5e85d5eb00865663a3d44f4108549fdb2840b086cfc781390d4a2d010000006a47304402202dc1496d28bb10d50d94d70870e2a79ea472c5960de8f7418bb30f9b96643efc02204691547c98edad3181a056bf6404601efe289200ba8e3073a2f5b7c0c7f4fec10121026516c551584b484ce3ca7bb71bbf24cce133bf40bdf4e2ce5a3936bc7e66a2abffffffff02e3020000000000001976a9144c83a20250ccb62ce2b3b1ea80c6082b634fdf9f88ac08f40200000000001976a9144c83a20250ccb62ce2b3b1ea80c6082b634fdf9f88ac00000000'x = requests.post(url, data = {'tx':tx})result = x.textprint(result)

Выполним пост запрос, если получаем ответ: Transaction Submitted. Это значит, что через несколько секунд транзакция появится в сети и деньги спишутся с пользователя.

Применение

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

Для демонстрации работы BTC оплаты, я напишу простенького телеграм бота, который будет выполнять роль клиента Blockchain.com, то есть вы сможете хранить в нем свои биткойны и от туда же переводить другим людям. Ссылка на исходники бота будут в конце.

Проверить работу бота можно тут: https://t.me/Blockchain_client_bot

Задеплоил на heroku, так что надеюсь не будет падать)

Функционал бота

Регистрация пользователя

В качестве БД я использовал sqlite3 и создал одну таблицу пользователей:

import sqlite3conn = sqlite3.connect("my.db")  # или :memory: чтобы сохранить в RAMcursor = conn.cursor()cursor.execute("CREATE TABLE users (chatid INTEGER , name TEXT, balance INTEGER, btc_wallet TEXT, wif TEXT, btc_sent TEXT, state INTEGER)")conn.commit()

При нажатии start мы регистрируем пользователя, генерируем для него адрес биткойн кошелька, wif и добавляем данные в БД:

sql = "SELECT COUNT(*) FROM users "cursor.execute(sql)user = cursor.fetchone()  address, wif= gen_address(user[0]+1)sql_insert = "INSERT INTO users VALUES ({}, '{}', 0,'{}','{}','no',0)".format(message.chat.id,                                                                           message.chat.first_name,address,wif)cursor.execute(sql_insert)conn.commit()

Проверка баланса

if message.text == '? Ваш баланс':  url = f'https://blockchain.info/rawaddr/{data[3]}'  x = requests.get(url)  wallet = x.json()  await bot.send_message(message.chat.id, f'''? *Итоговый баланс:* {format(wallet['final_balance'] / 100000000, '.9f')} BTC*Всего получено:* {format(wallet['total_received'] / 100000000, '.9f')} BTC*Всего отправлено:* {format(wallet['total_sent'] / 100000000, '.9f')} BTChttps://www.blockchain.com/ru/btc/address/{data[3]}''', parse_mode= "Markdown")

Получить BTC

Для создания qr-кода я использовал библиотеку qrcode и на вход передал ранее сгенерированный адрес биткойн кошелька из БД.

 if message.text == '? Получить BTC':    img = qrcode.make(data[3])    img.save('qr.jpg')    await bot.send_message(message.chat.id, f'''? Ваш адрес биткойн кошелька:*{data[3]}*''', parse_mode= "Markdown")        await bot.send_photo(message.chat.id,photo=open('qr.jpg', 'rb'))

Отправить BTC

try:    sum = float(message.text)    url = f'https://blockchain.info/rawaddr/{data[3]}'    x = requests.get(url)    wallet = x.json()    if sum + 10000 &lt;= wallet['final_balance'] / 100000000:        try:            my_key = PrivateKey(wif=data[4])            # Коммисия перевода, если поставить слишком маленькую, то транзакцию не примут            # И чем больше коммисия, тем быстрее пройдет перевод            fee = 10000            # Генерация транзакции            tx_hash = my_key.create_transaction([(data[5], sum, 'btc')], fee=fee, absolute_fee=True)            print(tx_hash)            url = 'https://blockchain.info/pushtx'            x = requests.post(url, data={'tx': tx_hash})            result = x.text            sql = "UPDATE users SET state = {} WHERE chatid = {}".format(0, message.chat.id)            cursor.execute(sql)            conn.commit()            await bot.send_message(message.chat.id, result)        except Exception:            await bot.send_message(message.chat.id, " Ошибка при выолнении транзакции")    else:        await bot.send_message(message.chat.id, '  На вашем балансе недостаточно средств.')except ValueError:    await bot.send_message(message.chat.id, 'Неправильно введена сумма отправления, попробуйте еще раз')

Проверим через сайт, что транзакция отправилась:

Исходники и как запустить

Скачать исходники бота можно тут: github.com/Lil-hack/blockchain-client

Склонировав репозиторий, устанавливаем необходимые пакеты:

pip install-rrequirements.txt

Некоторые библиотеки у меня не заработали на windows, так что лучше сразу запускать на linux.

В файле main.py заменяем ваш токен телеграм бота:

# Ваш токен от BotFatherTOKEN = 'YOUR TOKEN'

В файле btc_core.py заменяем на вашу seed фразу:

# Ваша seed фразаseed = 'YOUR SEED'

И запускаем бота командой: python main.py

Работает на python 3.7.0 и выше. Бот написан за один вечер, так что просьба строго не судить ^^

Итого

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

Подробнее..

Перевод Децентрализованный Веб. Результаты опроса 600 разработчиков

26.08.2020 12:14:14 | Автор: admin

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

О чем исследование


Термин DWeb (Decentralized Web, Двеб) или Web 3.0 чаще всего является собирательным для ряда новых технологий, которые перевернут веб в ближайшие несколько лет. Мы поговорили с 631 респондентом, которые в данный момент работают с распределенными технологиями и строят децентрализованный веб.

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

Веб изначально задумывался Тимом Бернерсом-Ли как открытая децентрализованная сеть для взаимодействия. Со временем технологические гиганты пятерки FAANG начали создавать удобные для пользователей интерфейсы и вырвались вперед, набрав критическую массу.

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

Сейчас все больше и больше проектов создают независимую инфраструктуру и стараются избавиться от посредников в виде FAANG.

В начале 2000-х годов крупные инди проекты Napster, Tor и BitTorrent ознаменовали возвращение к децентрализации. Позже их затмили их централизованные конкуренты.
Интерес к децентрализации затих, и возродился с появлением научной работы о новой децентрализованной валюте Bitcoin, за авторством Сатоши Накамото.

С этого момента новые DWeb протоколы, такие как, например, IPFS, прокладывают путь к фундаментальным изменениям в вебе. А уцелевшие проекты начала 2000-х годов, такие как Tor, I2P и даже Mixnets, выходят на новый виток развития. Теперь целое поколение проектов и разработчиков стремится к первоначальному видению децентрализованного веба, задуманного Тимом Бернерсом-Ли в 1990 году в CERN.

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

Основные выводы


  • Большинству проектов менее двух лет, что говорит о том, что DWeb все еще формируется и остается неокрепшей технологией.
  • Три четверти респондентов полагают, что DWeb толкает вперед в основном идеология и энтузиазм, и он пока еще не понят обычными пользователями.
  • Конфиденциальность данных, и контроль над ними, а также устойчивость технологий к сбоям наиболее ожидаемые особенности DWeb.
  • Самые большие сложности при разработке под DWeb вызывают peer-to-peer технологии и незрелость новых технологий.
  • Больше всего беспокойств у разработчиков вызывает DNS, протоколы уровня приложений SMTP, XMPP и пр., а также HTTP.
  • Бизнес-модели в экосистеме DWeb пока что отсутствуют; у более половины проектов нет никакой модели монетизации.
  • IPFS и Ethereum являются лидерами среди основных технологий, которые респонденты используют для создания DWeb приложений.
  • Интерес к DWeb среди разработчиков высок, но путь к его внедрению тернист: инфраструктура молода, и нуждается в улучшении, а пользователей нужно обучать преимуществам использования DWeb по сравнению с централизованными аналогами.
  • Тем не менее, возможности децентрализации веба ощутимы, и если текущая вирусная пандемия COVID-19 будет иметь хоть какой-то положительный эффект, то это может быть массовая осознанность при переходе к децентрализованным услугам.

Содержание


Отличия Web 3.0 и DWeb
Участники исследования
Текущий Веб

3.1 Проблемы текущего веба
3.2 Веб протоколы
DWeb
4.1 Понятие децентрализации
4.2 Ценности и миссия
4.3 Технические проблемы
4.4 Применение DWeb в будущем
Внедрение Двеба
5.1 Основные ограничения
5.2 Препятствия массовому использованию
5.3 Роль блокчейна
Проекты DWeb
6.1 Типы проектов
6.2 Мотивация
6.3 Статус проектов и команды
6.4 Технические характеристики
6.5 Бизнес-характеристики
Заключение и выводы


Отличия Web 3.0 и DWeb


В ходе исследования DWeb технологий мы ориентировались на несколько отличий в восприятии распределенных веб-технологий по сравнению с Web 3.0. В частности на то, как разработчики и сторонники сообщества определяют перспективы двух довольно расплывчатых терминов.

Ответы на опрос показывают, что общие цели и видение DWeb и Web 3.0 существенно пересекаются.

Web 3.0, в основном продвигаемый блокчейновым сообществом, делает упор на коммерческие разработки финансы, электронную коммерцию, AI и большие данные для компаний. Сторонники DWeb (например, IPFS и Internet Archive) напротив, в большей степени ориентированы на идеологию децентрализации: суверенитет данных, безопасность, конфиденциальность и устойчивость к цензуре. Проекты DWeb охватывают более широкий спектр технологических инноваций, нежели Web 3.0.

В целом, два восприятия следующей итерации сети не противоречат и могут фактически дополнять друг друга.

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


Участники исследования


Исследование состояло из опроса, который был заполнен 631 респондентом, из которых 231 активно работают над проектами, связанными с DWeb.

1. Ваш бэкграунд?




Опрос составлял 38 вопросов. Процентное распределение в ответах основано на неограниченном выборе ответов респондентами в большинстве случаев общий процент ответов составит более 100 процентов.

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


Текущий Веб


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

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


Самые уязвимые места текущего веба


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

2. Назовите основные проблемы в текущем Вебе




На первый взгляд, многие из наиболее значительных проблем могут показаться идеологически обусловленными и ограниченными мнениями сторонников конфиденциальности. Тем не менее, у молодого поколения, основной аудитории пользователей сети, все чаще возникают вопросы. Они устали от навязчивой рекламы, утечек данных и общего отсутствия контроля над данными или отсутствия конфиденциальности.

  • Из общего числа респондентов наибольшую озабоченность вызывали массовые утечки персональных данных, как например было с Marriott и Equifax по мнению 68,5% респондентов.
  • Цензура и ограничение доступа, введенные как техническими гигантами, так и правительствами, заняли второе и третье место, согласно 66% и 65% респондентов.
  • Реклама, использующая личные данные 61%
  • Данные пользователей из приложений 53%

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

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

3. Что должно быть исправлено в текущем вебе в первую очередь?



Ответы несколько повторяли комментарии о самых уязвимых местах.

  • Суверенитет данных был явным лидером. Причем 75,5% респондентов указали, что возвращение пользователю контроля над данными является первостепенным.
  • Конфиденциальность данных 59%
  • Технологическая устойчивость к разрушительным событиям или авариям (например, в случае Cloudflare) 56%
  • Безопасность, в частности повсеместное использование криптографических подписей в приложениях 51%
  • Анонимность сети 42%

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

Веб протоколы


4. Что нужно добавить или изменить в существующих протоколах?



Ответы на этот вопрос сильно различались во мнениях.

  • Встроенный слой персональных данных 44%
  • Встроенная идентификация пользователя 42%
  • Функционирование в офлайн режиме по умолчанию 42%
  • Встроенный peer-to-peer слой 37%
  • Некоторые ответы, такие как независимая от платформ идентификация и аутентификация пользователя 37%, могут быть объединены под более широким слоем персональных данных.

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

5. Какие из существующих интернет-протоколов нуждаются в редизайне?



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

  • Протоколы слоя адресации ресурсов (DNS) 52%
  • Протоколы коммуникации (SMTP, XMPP, IRC) 38%
  • HTTP 29%

Одним из наиболее заметных выводов была необходимость в более безопасном транспортном слое, а именно оснащение его безопасностью данных, управлением цифровыми правами и даже внедрение Tor в транспортный слой.

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


DWeb


Понятие децентрализации


6. Что значит Д в понятии Двеб?



Буква D в DWeb обозначает decentralized, то есть некую распределенную или децентрализованную систему. Не существует четкого определения такой системы, но, на практике это может быть динамическое движение от централизованной модели текущей сети к децентрализованной. Однако, такое движение нелинейно, и сталкивается с определенными трудностями.

Данный раздел исследования раскрывает задачи и перспективы реализации концепции DWeb.

Как отмечают респонденты, движение в сторону DWeb является идеологически ориентированным.

  • Большинство понимает DWeb как архитектурно децентрализованную сеть, где нет единой точки отказа или накопления данных 82%,
  • 64% участников видят Двеб как политически не контролируемую сеть,
  • 39% отмечают, что логика сети должна быть децентрализована,
  • 37% респондентов указали, что сеть должна быть распределенной или децентрализованной по принципу не доверяй, проверяй, где всё поддается проверке.

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


Ценности и миссия DWeb


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

7. Какие наиболее значительные изменения может привнести, по вашему мнению, DWeb?



  • Возвращение контроля над личными данными 75%
  • Неспособность подделать или подвергнуть цензуре контент 55%
  • Отсутствие трекинга/отслеживания пользователей или надзора 50%

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

8. Что крутого в DWeb технологиях по сравнению с традиционным Вебом?



Ответы на этот вопрос в значительной степени опирались на ценности и миссию, в очередной раз отражая идеологически мотивированный характер DWeb.

  • Безопасность 43%
  • Сообщество и поддержка 31%
  • Совместимость 31%
  • Масштабируемость 30%

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

Технические проблемы


9. Какие технологии могут поспособствовать массовому использованию DWeb?



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

  • Протоколы p2p коммуникации 55%
  • Адресно-ориентированное хранилище 54,5%
  • P2P обмен файлами 51%
  • Децентрализованный DNS 47%
  • Сети, ориентированные на конфиденциальность 46%

10. Пробовали ли вы делать приложения с технологиями DWeb? Какими именно?



  • IPFS 36%
  • Ethereum 25%
  • Dat 14%
  • Libp2p 12%

IPFS и Ethereum, в частности, являются одними из самых быстрорастущих open source проектов из всех приложений и протоколов DWeb.

Разработчики также упомянули ряд других проектов, включая WebTorrent, Freenet, Textile, Holochain, 3Box, Embark, Radicle, Matrix, Urbit, Tor, BitTorrent, Statebus / Braid, Peerlinks, BitMessage, Yjs, WebRTC, Hyperledger Fabric и многие другие.

11. Что наиболее всего разочаровывает вас в DWeb технологиях?



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

  • В частности, главное разочарование это недостаток документации, учебных пособий, видео и других образовательных ресурсов для разработчиков 44%
  • Также существует проблема с пониманием того, где и как применять Dweb технологии на практике 42%
  • Сложность интеграции технологий друг с другом 40%
  • Проблемы масштабирования распределенных технологий 21%

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

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

12. Назовите наиболее сложные технические моменты в разработке с использованием P2P



Ответы на вопрос о трудностях DWeb сфокусировались на конкретных проблемах реализации p2p проектов. Мы снова наблюдаем уже названные ранее сложности.

  • Проблемы масштабирования 34%
  • Стабильность соединения пиров в сети 31%
  • Производительность 25%


* * *
Следующая часть будет полезна разработчикам, интересующимся конкретными трудностями в экосистеме DWeb. Некоторые проблемы Двеба включают в себя техническую сложность, например, многоуровневая архитектура P2P.

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

Дополнительно есть определенные трудности несовместимости программ и браузера, нестабильности сети, управления идентификацией пользователей и аналитикой.


Использование DWeb технологий в будущем


13. С какой вероятностью вы используете DWeb технологии в своем следующем проекте?



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

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


Внедрение DWeb


14. Назовите наиболее трудные препятствия на пути к DWeb



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

  • Пользователи недостаточно осведомлены о том, что такое DWeb, как и о его преимуществах 70%
  • Неготовность новой технологии 49%
  • Сопротивление FAANG 42%
  • Отсутствие бизнес-моделей для DWeb проектов 38%
  • Отсутствие интеграции децентрализованных технологий с веб-браузерами 37%

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


15. Что именно препятствует массовому использованию вашего DWeb приложения/протокола?



  • Неготовность проекта 59%
  • Трудности с обучением/объяснением новым пользователям, как работает DWeb 35,5%
  • Сравнительно небольшое количество пользователей DWeb 24%

Осведомленность пользователей о децентрализованных технологиях необходима, чтобы отвлечь их от централизованной, традиционной парадигмы, которая сегодня доминирует в сети. Наряду с преимуществами UX/UI централизованных систем, идеология DWeb несет гораздо больше положительных моментов для пользователей. Пока что понимание и особенно использование слишком сложно для обычного пользователя без технического бэкграунда. Запуск многих p2p приложений отличается от запуска обычных приложений.

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

Роль блокчейна


Блокчейн технология была на пике популярности во время массового запуска ICO в конце 2017 года. С тех пор разработчики и компании взаимодействуют с различными блокчейн сервисами с переменным успехом.

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

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

16. Что вы думаете о роли блокчейна?


  • Блокчейн не решение всех проблем 58%
  • Блокчейн удобен для цифровой валюты и платежей 54%
  • Блокчейн идеален для децентрализованных ID 36%
  • Полезность блокчейна для широкого круга задач DWeb 33%
  • Блокчейн можно использовать в цифровой сертификации 31%
  • Технология блокчейн это пустая трата времени 14%


Проекты DWeb


Типы проектов


Респонденты, работающие над различными DWeb проектами, географически разбросаны по всему миру, и работают как в неизвестных, так и в более популярных в этой сфере проектах. Некоторые из наиболее известных проектов включают IPFS, Dat и OrbitDB, менее крупные например, Lokinet, Radicle, Textile, и другие.

17. Типы DWeb проектов



Типы проектов DWeb значительно различались. Мы обобщили их в группы в зависимости от целей. Вот наиболее популярные направления, которым респонденты отдают свои идеологические предпочтения:

  • Области хранения и обмена данными 27
  • Социальные сети 17
  • Финансы 16

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

Кроме того, финансовая революция, проявляющаяся в наиболее практическом юзкейсе DeFi на Ethereum это слияние технологии блокчейна и P2P протоколов DWeb.

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

18. Что вы разрабатываете протокол или приложение?



Из всех участников исследования 231 человек указал, что работает над проектом.

  • Развивают приложения для конечных пользователей 49%
  • Работают над инфраструктурой или протоколами для разработчиков 44%


Мотивация


19. Почему вы сделали выбор в пользу P2P, а не централизованной архитектуры для своего проекта?



Разработчики ранее уже отмечали идеологическое предпочтение использования DWeb и технологий P2P. В вопросе почему они выбирают peer-to-peer технологии,

  • Большинство опирается на фундаментальные идеологические ценности 72%
  • Выбрали DWeb по техническим причинам 58%

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

Статус проектов и команды


20. На какой стадии ваш проект?



  • Все еще находятся на стадии разработки 51%
  • Запущены 29%
  • На стадии идеи / концепции 15%
  • Находятся на других стадиях разработки 5%

21. Сколько вы работаете над своим проектом?



Условно говоря, большинство проектов DWeb являются новыми по сравнению с их централизованными веб-аналогами.

  • Работают только 1 2 года 31,5%
  • Существуют более 3 лет 21%
  • Работают менее 1 года 17%

22. Сколько человек работает в вашем проекте?



Размеры команд варьируются в небольших диапазонах.

  • От двух до пяти человек 35%
  • Работают в одиночку 34%
  • Более 10 разработчиков в команде (обычно это хорошо известные проекты, такие как IPFS) 21%
  • Команда от 6 до 10 разработчиков 10%


Технические характеристики


Что касается лицензирования open source DWeb проектов, разработчики выбирают лицензии релевантные и для традиционных технологий.

23. Какую лицензию вы выбрали для своего проекта?



  • MIT 42%
  • AGPL 3.0 21%
  • Apache 2.0 16,5%
  • Решение о лицензировании пока не принято 18,5%
  • Не лицензируют свой код 10%

24. Основной стек вашего проекта?



Стек проектов представляет собой сочетание наиболее часто используемых технологий front-end, back-end и DWeb.
Фронтенд в основном представлен:
  • React 20
  • Typescript 13
  • Angular 8
  • Electron 6

Для бэкенда респонденты в основном используют:
  • GO 25
  • Node.js 33
  • Rust 24
  • Python 18

В целом, выбор отражает массовые тенденции в области разработки open source, например, в отчете Github State of the Octoverse.

В технологиях DWeb лидируют:
  • IPFS 32
  • Ethereum 30
  • libp2p 14
  • DAT 10


Бизнес-модели и инвестиции


25. Какая бизнес-модель у вашего проекта?



Бизнес-модели в DWeb были названы одной из наиболее серьезных проблем, стоящих перед разработчиками. Трудно извлечь ценность из открытых протоколов, которые не придерживаются централизованных схем монетизации данных.

  • Нет модели получения доходов со своего проекта 30%
  • Подумаю об этом позже 22,5%
  • Модель Freemium 15%
  • Платный DWeb продукт 15%

Некоторые из концептуальных идей монетизации остаются пока полусырыми для применения в DWeb. Например, SaaS и лицензирование были упомянуты несколько раз в комментариях. Стэйкинг и governance в блокчейнах также упоминались в нескольких проектах. Хотя в них определенно есть потенциал, они все еще находятся на самых ранних стадиях и не готовы к широкому распространению.

Финансирование


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

26. Как были получены первые инвестиции для вашего проекта?



  • Проект DWeb финансируется его основателем 53%
  • Получили инвестиции от венчурных фондов или бизнес-ангелов 19%
  • Получили гранты 15%
  • Количество токен сейлов и ICO существенно сокращается с 2017 года, и составляет малую долю от всех проектов 10%

Участники исследования не стеснялись выражать свое разочарование в сложностях получения инвестиций для DWeb.

Аудитория проектов


27. Ежемесячная аудитория вашего проекта



Проблема привлечения и обучения пользователей влияет на количество пользователей проектов DWeb. Количество сильно разнится в меньшую сторону по сравнению с централизованными приложениями.

  • Еще не запустили продукт 35%
  • Менее 100 пользователей в месяц 21%
  • Не имеют возможности оценить свою аудиторию 10,5%
  • Не знают количество пользователей 10%
  • От 100 до 1K пользователей 9%


Заключение и выводы


  • Понятие DWeb среди его сторонников в основном обусловлено как семантикой, так и более широкими целями децентрализации: суверенитетом данных, конфиденциальностью, борьбой с цензурой и сопутствующими ими изменениями. По-видимому, всё это является основным лейтмотивом и точкой роста Двеба.
  • Многие проекты и заинтересованные респонденты поддерживают идеологические ценности DWeb. Ценности варьируются от подавления государственного надзора за пользователями до прекращения злоупотребления пользовательскими данными технологическими гигантами.
  • Разработчики в восторге от DWeb, но широкое признание технологий и приложений DWeb в лучшем случае пока что не на должном уровне. Информации достаточно мало, а проблемы суверенитета и конфиденциальности данных все еще не доведены достаточным образом до общественности. Разработчики сталкиваются со множеством препятствий, начиная от недостатка документации и инструментов до несовместимости технологии DWeb с существующей инфраструктурой.
  • Большинство обычных пользователей склонны согласиться с предпосылками DWeb. Однако технические ограничения мешают разработчикам. Неудобные для пользователей приложения, например, из-за производительности или сложности, препятствуют более широкому внедрению технологии DWeb.
  • Правительства и крупные технологические компании демонстрируют ощутимое сопротивление появлению децентрализованных технологий, будь то финансы, конфиденциальность данных или устойчивость к цензуре. Крупные технологические фирмы не смогут легко отказаться от контроля над необъятными массивами пользовательских данных, которыми они владеют. Тем не менее, технология DWeb может вытеснить их. Фундамент положен, и за ним должно прийти сильное массовое движение. Теперь речь идет о создании инфраструктуры технологии, предоставлении большего количества образовательных материалов для разработчиков и обычных веб-пользователей.
  • Монетизация и финансирование являются критическими проблемами для технологий DWeb на данный момент. Доступ к финансированию, несомненно, будет повышен после окончания пандемии. Всё же проектам DWeb необходимо найти новые способы расширения своих финансовых возможностей, помимо вариантов венчурных или инвестиций от бизнес-ангелов. Технологические гиганты в виде FAANG держат хватку и демонстрируют склонность к подавлению конкуренции. Без адекватных моделей монетизации проекты DWeb будут бесконечно бороться за актуальность и привлекательность для массового пользователя.


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

Технология DWeb вызывает глубокий интерес и стремительно растет. У выдающихся проектов, таких как Ethereum и IPFS, уже есть огромное количество сторонников. Тем не менее количество пользователей и признание небольших проектов уменьшается в связи с монополизацией рынка традиционными технологическими гигантами. Для того чтобы эти проекты получили дальнейшее развитие, необходима инфраструктура. К примеру, инструменты для разработчиков, и поддерживаемая документация, а также рычаги для привлечения обычного веб-пользователя к приложениям DWeb.

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

  • Растущая осознанность о необходимости более высокого уровня конфиденциальности после разоблачения правительственного надзора, серьезных нарушений и массовых утечек данных потребителей. Пользователи хотят контролировать свои данные. Цифровая конфиденциальность теперь пользуется большим спросом. DWeb сможет показать пользователям практические решения.
  • Неопределенная экономическая и денежно-кредитная политика во время пандемии может подтолкнуть многих к изучению крипто технологий, и тем самым познакомить их с частью DWeb.
  • Глобальный всплеск развития open-source проектов, инструментов и лицензий накапливает сферу влияния на главные индустрии, тем самым снижая барьеры доступа и раскрывая децентрализованный потенциал Интернета.
  • Основные веб-браузеры, интегрирующие протоколы DWeb (например, Opera) и новые появляющиеся браузеры (Brave), могут сделать переход к децентрализованным технологиям простым и почти незаметным для обычных пользователей.


Интернет, несмотря на свое скромное, децентрализованное происхождение, десятилетиями переходил к централизации.

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

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

Список участников исследования можно посмотреть тут. Так же доступны анонимизированные сырые данные. Спасибо всем за участие!
Подробнее..

Я фантаст, я так вижу

16.04.2021 02:15:22 | Автор: admin

На Хабре появляется масса интересных постов на тему проблем с поиском работы и быстро меняющегося рынка труда. Например, на прошлой неделе мы активно обсуждали оплату работы на удалёнке и её отличие от работы в офисе.

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

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

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

Итак, я фантаст, и я так вижу:

Лично меня каждый месяц больше всего расстраивает затраты бизнеса на ФОТ, в первую очередь хочется уменьшить именно их и поэтому я "навангую" (предсказываю хорошее, влияя тем самым на будущее. Филологи, нет же другого более близкого глагола?), что автоматизация всё сильнее будет распространяться от уже и так автоматизированного производства к услугам, устраняя всё большую часть именно хорошо оплачиваемых рабочих мест "белых воротничков".

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


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

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

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

  • Строители по видеосвязи, удалённо контролирующие, а временами подключающиеся к процессу автоматической стройки.

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

Кстати на Хабре пока очень мало обсуждалась всё возрастающая бесправность удалёнщиков и фрилансеров, буду рад обсудить ваш прогноз появления законов, защищающих прекариат.

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

Чтобы уменьшить описанную "низкоквалифицированность" хочется наванговать уменьшение легированности управления (вот такой я нашёл антоним для делегированности, филологи всё ещё здесь?).

Это может быть достигнуто только в том случае, если менеджеры ослабят свои иерархические тенденции и передадут власть отдельным бизнес-агентам, это моя третья мысль.


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

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

Сотрудники, участвовавшие в опросе, тратили в среднем 27% своего времени на бюрократические хлопоты, такие как написание отчетов или документирование выполненной работы.

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

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

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

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

В мире уже много примеров хорошо работающих систем с децентрализацией управления.

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

Пример, попавшийся на глаза: Buurtzorg, голландский поставщик медицинских услуг на дому, разделен на более чем 1200 самоорганизующихся команд.

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

Это позволяет организации с 15 000 сотрудников иметь центральный штат чуть более 100 человек.

Другая высоко децентрализованная группа - американская сталелитейная компания Nucor. По сути, это конфедерация из 75 подразделений, которые осуществляют свои собственные исследования и разработки, продажи и маркетинг.

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

Одна из команд отклонила заявки на замену корпуса печи внешней организацией и спроектировала ее сама, сэкономив 90% запланированной стоимости замены.

Morning Star, крупнейший и самый прибыльный в Америке переработчик помидоров, не имеет ни менеджеров, ни должностей; 500 коллег, соТрудников работают в командах, охватывающих 20 бизнес-единиц.

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

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


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

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

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

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

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

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

Подробнее..

Можно ли генерировать случайные числа, если мы не доверяем друг другу? Часть 1

29.09.2020 08:19:42 | Автор: admin

Привет, Хабр!

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

Зачем вообще нужно генерировать случайные числа участникам, не доверяющим друг другу? Одна из областей применения -- это децентрализованные приложения. Например, приложение, которое принимает ставку от участника и либо удваивает сумму с вероятностью 49%, либо забирает с 51%, будет работать только если оно может непредвзято получить случайное число. Если злоумышленник может повлиять на результат работы генератора случайных чисел, и даже незначительно увеличить свой шанс получить выплату в приложении, он легко опустошит его.

Когда мы разрабатываем распределенный протокол генерации случайных чисел, мы хотим, чтобы он обладал тремя свойствами:

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

  2. Он должен быть непредсказуемым. Другими словами, ни один участник не должен иметь возможность предугадать, какое число будет сгенерировано (или вывести какие-либо его свойства) до того, как оно будет сгенерировано.

  3. Протокол должен быть жизнеспособным, то есть устойчивым к тому, что какой-то процент участников отключатся от сети или намеренно попытаются остановить протокол.

В этой статье мы рассмотрим два подхода: RANDAO + VDF и подход, основанный на стирающих кодах. В следующей части мы подробно разберем подход, основанный на пороговых подписях.

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

RANDAO

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

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

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

Какие из свойств, которые мы описали выше, есть у RANDAO? Он непредсказуем, имеет ту же жизнеспособность, что и лежащий в его основе протокол консенсуса, но он является предвзятым. В частности, злоумышленник может наблюдать за сетью, и после того, как другие участники раскроют свои числа, он может вычислить их XOR, и решить, раскрывать или не раскрывать своё число, чтобы повлиять на результат. В то время как это не позволяет злоумышленнику единолично определить вывод генератора случайных чисел, это все еще дает ему 1 бит влияния. А если злоумышленники управляют несколькими участниками, то число контролируемых ими битов будет равно числу участников под их управлением.

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

RANDAO + VDF

Один из вариантов, как сделать RANDAO непредвзятым, состоит в следующем: после того, как все числа вскрыты, и XOR посчитан, его результат подается на вход функции, которая занимает очень много времени, чтобы ее вычислить, но позволяет проверить правильность вычисления очень быстро.

(vdf_output, vdf_proof) = VDF_compute(input) // это очень медленноcorrect = VDF_verify(input, vdf_output, vdf_proof) // это очень быстро

Такая функция называется Verifiable Delay Function, или VDF. Если вычисление окончательного результата занимает больше времени, чем этап раскрытия чисел, то злоумышленник не сможет предсказать эффект от демонстрации или утаивания своего числа, а следовательно он потеряет возможность влиять на результат.

Разработка хороших VDF чрезвычайно сложна. В последнее время было сделано несколько прорывов, например этот и этот, которые сделали VDF более применимыми на практике, и Ethereum 2.0 в долгосрочной перспективе планирует использовать RANDAO с VDF в качестве источника случайных чисел. Помимо того факта, что этот подход непредсказуем и непредвзят, у него есть дополнительное преимущество, которое заключается в жизнеспособности, если хотя бы два участника доступны в сети (при условии, что используемый протокол консенсуса жизнеспособен при работе с таким небольшим количеством участников).

Самая большая сложность этого подхода заключается в такой настройке VDF, чтобы даже участник с очень дорогим специализированным оборудованием не смог вычислить VDF до окончания фазы раскрытия. В идеале алгоритм должен иметь даже значимый запас прочности, скажем, 10x. На рисунке ниже показана атака участника, имеющего специализированный ASIC, который позволяет ему запускать VDF быстрее, чем время, выделенное для раскрытия подтверждения RANDAO. Такой участник может по-прежнему вычислять конечный результат используя и не используя своё число, и после этого, на основе расчетов, выбирать, показывать его или нет.

Для упомянутого выше семейства VDF производительность специализированного ASIC может быть в 100+ раз выше, чем у обычного оборудования. Таким образом, если фаза раскрытия длится 10 секунд, то VDF, вычисляемая на такой ASIC, должна занимать более 100 секунд, чтобы иметь 10-кратный запас безопасности, и, таким образом, тот же VDF, вычисленный на обычном оборудовании, должен занять 100 x 100 секунд = ~ 3 часа.

Ethereum Foundation планирует решить эту проблему за счет создания собственных общедоступных бесплатных ASIC. Как только это произойдет, все другие протоколы также могут использовать преимущества этой технологии, но до тех пор подход RANDAO + VDF не будет столь же жизнеспособным для протоколов, которые не могут инвестировать в разработку своих собственных ASIC.

Много статей, видео и другой информации о VDF собрано на этом сайте.

Используем стирающие коды

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

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

  1. Каждый участник локально придумывает длинную строку, разбивает ее на 67 частей, создает стирающие коды для получения 100 долей, таких, что любых 67 достаточно для восстановления строки, назначает каждую из 100 долей одному из участников и шифрует их с помощью открытого ключа того же участника. Затем все закодированные доли публикуются.

  2. Участники используют некоторый консенсус, чтобы достичь согласия о закодированных наборах от конкретных 67 участников.

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

  4. Как только 67 участников выполнили шаг (3), все согласованные наборы могут быть полностью декодированы и восстановлены благодаря свойствам стирающих кодов, и окончательное число может быть получено как XOR начальных строк, с которых участники начали в (1).

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

Что происходит, если на шаге (1) один из участников отправил другим участникам закодированные доли, которые не являются корректным стирающим кодом некоторой строки? Без дополнительных изменений разные участники либо не смогут восстановить строку совсем, либо восстановят разные строки, что приведет к тому, что разные участники получат разное случайное число. Чтобы это предотвратить, можно сделать следующее: каждый участник, помимо закодированных долей, вычисляет также дерево меркла всех таких долей, и каждому участнику посылает как саму закодированную долю, так и корень дерева меркла, и доказательство включения доли в дерево меркла. В консенсусе на шаге (2) затем участники не просто соглашаются на множестве наборов, но на множестве конкретных корней таких деревьев (если некоторый участник отошел от протокола, и отправил разные корни дерева меркла разным участникам, и два таких корня показаны во время консенсуса, его строка не включается в результирующий набор). По итогу консенсуса мы будем иметь 67 закодированных строк и соответствующих им корней дерева меркла таких, что есть хотя бы 67 участников (не обязательно тех же кто предложили соответствующие строки), у которых для каждой из 67 строк есть сообщение с долей стирающего кода, и доказательство вхождения их доли в соответствующее дерево меркла.

Когда на шаге (4) участник расшифровывает 67 долей для некоторой строки, и пытается по ним восстановить оригинальную строку, возможен один из вариантов:

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

  2. Строка восстанавливается, но посчитанный локально корень не соответствует тому, на котором достигнут консенсус.

  3. Строка не восстанавливается.

Легко показать, что если хотя бы для одного участника выше случился вариант (1), то для всех участников случится вариант (1), и наоборот, если хотя бы для одного участника случился вариант (2) или (3), то для всех участников случится вариант (2) или (3). Таким образом, для каждой строки в наборе либо все участники успешно ее восстановят, либо все участники не смогут ее восстановить. Затем результирующее случайное число это XOR только тех строк, которые участники смогли восстановить.

Пороговые подписи

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

Подписи BLS это конструкция, которая позволяет нескольким участникам создавать одну общую подпись для сообщения. Такие подписи часто используются для экономии места и пропускной способности за счет того, что не требует рассылки нескольких подписей.

Частое применение для BLS-подписей в протоколах блокчейна, помимо генерации случайных чисел, это подписывание блоков в протоколах BFT. Скажем, 100 участников создают блоки, и блок считается окончательным, если 67 из них подписывают его. Все они могут представить свои части BLS-подписи и использовать некоторый консенсус-алгоритм, чтобы согласовать 67 из них, а затем объединить их в одну BLS-подпись. Любые 67 (или больше) частей могут быть использованы для создания итоговой подписи, которая будет зависеть от того, какие именно 67 подписей были объединены, и поэтому может различаться, но не смотря на то, что разный выбор 67-ми участников будет создавать разную подпись, любая такая подпись будет корректной подписью для блока. Остальным участникам затем достаточно получить по сети и проверить только одну подпись на каждый блок, вместо 67, что заметно понижает нагрузку на сеть.

Оказывается, что если закрытые ключи, которые используют участники, генерируются определенным образом, то независимо от того, какие 67 подписей (или больше, но никак не меньше) агрегированы, получающаяся в результате подпись будет одинаковой. Это может быть использовано в качестве источника случайности: участники сначала договариваются о некотором сообщении, которое они подпишут (это может быть вывод RANDAO или просто хэш последнего блока, на самом деле это не имеет значения, лишь бы оно каждый раз менялось и было согласованным), и создают для него BLS-подпись. Результат генерации будет непредсказуемым, пока 67 участников не предоставят свои части, а после этого выходные данные уже предопределены и не могут зависеть от действий любого участника.

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

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

В заключение

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

Код протокола открыт, наша реализация написана на Rust, её можно найти тут.

Посмотреть как выглядит разработка под NEAR, и поэкспериментировать в онлайн-IDE можно здесь.

Следить за всеми новостями на русском можно в группе в телеграме и в группе на ВКонтакте, а на английском в официальном твиттере.

До скорых встреч!

Подробнее..

Можно ли генерировать случайные числа, если мы не доверяем друг другу? Часть 2

02.10.2020 08:12:51 | Автор: admin

Привет, Хабр!

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

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

Немного криптографии

Для того, чтобы понять, как работают пороговые подписи, надо понимать немного базовой криптографии. Мы будем использовать две концепции: скаляры, или просто числа, которые мы будем обозначать строчными буквами (x, y) и точки на эллиптической кривой, которые мы будем обозначать прописными буквами.

Для понимания основ пороговых подписей не надо понимать как работают эллиптические кривые, кроме нескольких базовых вещей:

  1. Точки на эллиптической кривой можно складывать и умножать на скаляр (умножение на скаляр мы будем обозначать как xG, хотя нотация Gx тоже часто используется в литературе). Результат сложения и умножения на скаляр -- это точка на эллиптической кривой.

  2. Зная только точку G и ее произведение со скаляром xG нельзя вычислить x.

Мы будем также использовать концепцию полинома p(x) степени k-1. В частности, мы будем использовать следующее свойство полиномов: если мы знаем значение p(x) для любых k различных x (и не имеем больше никакой информации о p(x)), мы можем вычислить p(x) для любого другого x.

Интересно, что для любого полинома p(x) и некоторой точки на кривой G, зная значение p(x)G для любых k различных значений x, можно также вычислить p(x)G для любой x.

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

Генератор случайных чисел на пороговых подписях

Допустим что n участников хотят сгенерировать случайное число, и мы хотим, чтобы участие любых k из них было достаточно чтобы сгенерировать число, но чтобы злоумышленники, которые контролируют k-1 или меньше участников, не могли предсказать или повлиять на сгенерированное число.

Допустим существует такой полином p(x) степени k-1, что первый участник знает p(1), второй знает p(2), и так далее (n-ый знает p(n)). Также допустим, что для некоторой заранее определенной точки G все знают p(x)G для всех значений x. Мы будем называть p(i) приватной компонентой i-ого участника (потому что только i-ый участник знает ее), и p(i)G публичной компонентой i-ого участника (потому что все участники знают ее). Как вы помните, знание p(i)G не достаточно чтобы восстановить p(i).

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

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

H = scalarToPoint(h)

Затем каждый участник i вычисляет и публикует Hi = p(i)H, что они могут сделать, потому что они знают p(i) и H. Раскрытие Hi не позволяет другим участникам восстановить приватную компоненту i-ого участника, и поэтому один набор приватных компонент можно использовать от блока к блоку. Таким образом, дорогой алгоритм создания полинома, описанный ниже, необходимо выполнить только однажды.

Когда k участников вскрыли Hi = p(i)H, все могут вычислить Hx = p(x)H для всех x благодаря свойству полиномов, которые мы обсудили в прошлом разделе. В этот момент все участники вычисляют H0 = p(0)H, и это и есть результирующее случайное число. Обратите внимание, что никто не знает p(0), и следовательно единственный способ посчитать p(0)H это интерполяция p(x)H, что возможно только когда k значений p(i)H известны. Вскрытие любого меньшего количества p(i)H не дает никакой информации о p(0)H.

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

Есть одна проблема, которую мы аккуратно обошли стороной выше. Чтобы интерполяция работала, важно чтобы значение Hi которое опубликовал каждый участник i действительно было равно p(i)H. Так как никто кроме i-ого участник не знает p(i), никто кроме i-ого участника не может проверить что Hiдействительно посчитано правильно, и без какого-то криптографического доказательства корректности Hi злоумышленник может опубликовать любое значение в качестве Hi, и произвольно влиять на вывод генератора случайных чисел:

Разные значения H_1, отправленные первым участником, приводят к разным результирующим H_0Разные значения H_1, отправленные первым участником, приводят к разным результирующим H_0

Есть по меньшей мере два способа доказать корректность Hi, мы их рассмотрим после того, как разберем генерацию полинома.

Генерация полинома

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

В этом разделе мы будем полагать, что каждый участник имеет локально некоторый приватный ключ xi, такой что всем известен соответствующий публичный ключ Xi.

Один возможный протокол генерации полинома следующий:

  1. Каждый участник i локально создает произвольный полином pi(x) степени k-1. Они затем посылают каждому участнику j значение pi(j), зашифрованное публичным ключом Xj. Таким образом только i-ый и j-ый участник знают pi(j). Участник i также публично анонсирует pi(j)G для всех j от 1 до k включительно.

  2. Все участники используют некоторый консенсус чтобы выбрать k участников, чьи полиномы будут использоваться. Так как некоторые участники могут быть оффлайн, мы не можем ждать пока все n участников опубликуют полиномы. Результат этого шага множество Z состоящее из хотя бы k полиномов, созданных на шаге (1).

  3. Участники убеждаются, что известные им значения pi(j) соответствуют публично анонсированным pi(j)G. После этого шага в Z должны остаться только полиномы, для которых приватно переданные pi(j) соответствуют публично анонсированным pi(j)G.

  4. Каждый участник j вычисляет свою приватную компоненту p(j) как сумму pi(j) для всех i в Z. Каждый участник также вычисляет все значения p(x)G как сумму pi(x)G для всех i в Z.

Обратите внимание, что p(x) это действительно полином степени k-1, потому что это сумма отдельных pi(x), каждый из которых это полином степени k-1. Затем, обратите внимание, что в то время как каждый участник j знает p(j), у них нет никакой информации об p(x) для x j. Действительно, чтобы вычислить это значение, им необходимо знать все pi(x), и покуда участник j не знает хотя бы один из выбранных полиномов, у них нет достаточной информации об p(x).

Это весь процесс генерации полинома, который был необходим в прошлом разделе. Шаги 1, 2 и 4 выше имеют достаточно очевидную реализацию. А вот шаг 3 не такой тривиальный.

Конкретно, нам нужно уметь доказывать, что зашифрованные pi(j) действительно соответствуют опубликованным pi(j)G. Если мы не можем это доказать, злоумышленник i может послать мусор вместо pi(j) участнику j, и участник j не сможет получить настоящее значение pi(j), и не сможет вычислить свою приватную компоненту.

Есть криптографический протокол, который позволяет создать дополнительное сообщение proofi(j), такое что любой участник, имея некоторое значение e, а также proofi(j) и pi(j)G, может локально убедиться, что e это действительно pi(j), зашифрованное ключом участника j. К сожалению, размер такого доказательства невероятно большой, и учитывая что необходимо опубликовать O(nk) таких доказательств, использовать их для этой цели не получится.

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

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

Доказательства корректности H_i

Последняя часть, которую осталось обсудить, это как доказать корректность опубликованных Hi, а именно что Hi = p(i)H, без вскрытия p(i).

Вспомним, что значения H, G, p(i)G публичны и известны всем. Операция получения p(i) зная p(i)G и G называется дискретный логарифм, или dlog, и мы хотим доказать, что:

dlog(p(i)G, G) = dlog(Hi, H)

без разглашения p(i). Конструкции для таких доказательств существуют, например Schnorr Protocol.

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

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

Пытливый читатель может спросить: так как финальное случайное число это H0, и p(0)G это публичная информация, зачем нужно доказательство для каждого отдельного Hi, почему вместо этого не отправить доказательство того, что

dlog(p(0)G, G) = dlog(H0, H)

Проблема, что с помощью Schnorr Protocol нельзя создать такое доказательство, потому что никто не знает значение p(0), необходимое для создания доказательства, и более того, весь генератор случайных чисел основан на том, что никто не знает это значение. Поэтому необходимо иметь все значения Hiи их индивидуальные доказательства, чтобы доказать корректность H0.

Однако, если бы на точках на эллиптических кривых была бы какая-то операция, которая семантически схожа с умножением, доказательство корректности H0было бы тривиальным, мы бы просто убедились, что

H0G = p(0)G H

Если выбранная кривая поддерживает elliptic curve pairings, такое доказательство работает. В этом случае H0 это не только вывод генератора случайных чисел, который может проверить любой участник, который знает G, H и p(0)G. H0 это еще и подпись на сообщении, которое использовалось как seed, подтверждающая, что k и n участников подписали это сообщение. Таким образом, если seed это хеш блока в протоколе блокчейна, то H0 это одновременно мульти-подпись на блоке, и очень хорошее случайное число.

В заключение

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

Код протокола открыт, наша реализация написана на Rust, её можно найти тут.

Посмотреть как выглядит разработка под NEAR, и поэкспериментировать в онлайн-IDE можно здесь.

Следить за всеми новостями на русском можно в группе в телеграме и в группе на ВКонтакте, а на английском в официальном твиттере.

До скорых встреч!

Подробнее..

Сколько нужно рома, чтобы получить хорошую кольцевую подпись?

06.10.2020 10:05:04 | Автор: admin

Цифровая подпись является виртуальной скрепой практически любого блокчейн-проекта. В подавляющем большинстве проектов используется подпись, практически не отличающаяся от подписи, используемой в сети Bitcoin(а именно ECDSA на кривой secp256k1). Однако, создание цифровой подписи для проектов, в которых приватность пользователей играет существенную роль, часто превращается в сложный акробатический номер, базирующийся на передовых достижениях в области дискретной математики и криптографии.

Дело в том, что в отличие от обычных блокчейн-проектов, где в транзакции явно указано, какая монета тратится из какого кошелька, в прайваси блокчейнах используются разные способы запутывания следов. Одними из первых, кто занимался решением этой задачи, был проект CryptoNote, в котором была реализована схема с кольцевой подписью. Такая схема, вместо явного указания на транзакцию-источник монет, позволяет включить в подпись группу из случайных транзакций, не связанных с этим переводом. Таким образом, сторонний наблюдатель не догадывается, из какой именно транзакции-источника на самом деле берутся деньги. Известно только, что отправитель доказал свое право владения одной из них. Такие подмешанные транзакции называются mixins или decoys, а их количество определяет так называемый anonymity set.

Самым узнаваемым проектом, построенным на базе CryptoNote, на сегодняшний день является Monero. За последние несколько лет участники этого проекта внедрили целый ряд улучшений, скрыли значения сумм переводов, а также усовершенствовали саму подпись. Тем не менее, существенной проблемой остается размер подписи и ее производительность, которые линейно зависят от количества элементов кольцевой подписи или же от размера кольца, и это накладывает определенные ограничения на уровень анонимности (на момент написания статьи, в Monero по умолчанию используется anonymity set 10).

В настоящее время, в рамках проекта Zano мы работаем над созданием такой подписи, в которой зависимость ее размера от количества decoys была бы логарифмической, что в свою очередь позволило бы нам значительно увеличить anonymity set, и, следовательно, повысить уровень приватности. Несколько месяцев назад у Anton Sokolov возникла интересная идея по реализации такой подписи , и после того, как он ее сформулировал и опубликовал ее базовые теоретические аспекты, мы решили объединить усилия, Антон присоединился к нашей команде и сейчас мы активно изучаем возможности построения технологии на базе этой подписи.

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

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

Конкурс в баре

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

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

Для того, чтобы не отходить далеко от канвы математических рассуждений, представим себе, что в баре есть устройство, позволяющее смешивать напитки в определенных пропорциях. Например, в устройство можно вставить по бутылке водки и рома (или две емкости с какими-либо другими напитками), указать пропорцию 449/17, и получить на выходе емкость с напитком, содержащим 449 единиц водки на 17 единиц рома. Также в баре есть генератор случайных равномерно распределенных пропорций от 1/100000 до 100000/1. Конструкции устройства смешивания и генератора пропорций открытые, в правильности их работы никто не сомневается. Также, для полноты картины, в баре есть электронный дегустатор, которому на вход наливают два напитка, и у него загорается зеленая лампочка, если напитки одинаковые, и красная, если напитки разные. Электронный дегустатор никогда не ошибается, это могут подтвердить все жители города.

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

Шаг 1: Итак, игра начинается с того, что участник ставит на свой стол бокал, помеченный буквой Z, с напитком, известным только ему. Участнику известны соотношения компонентов напитка в этом бокале, т.е. он знает рецепт приготовления содержимого Z, но держит этот рецепт в секрете. Известно только то, что согласно условиям, участник должен добавлять в Z и цитрус, и алкоголь. Вдобавок, участник ставит на стол второй помеченный H1 бокал с некоторым выбранным им самим содержимым, рецепт приготовления которого может быть ему как известен, так и неизвестен, т.е. участник волен налить в бокал H1 все что угодно.

Шаг 2: бармен получает пропорцию с11 от генератора случайных пропорций, смешивает ром и водку в этой пропорции и ставит на барную стойку бокал R1 с полученным алкогольным напитком. Затем, бармен получает пропорцию с13 от генератора случайных пропорций, смешивает лимонный и апельсиновый соки в этой пропорции и ставит на барную стойку бокал R2 с полученным цитрусовым напитком. Все посетители бара, включая самого участника, видят значения с11 и с13, а также то, что бармен готовит содержимое бокалов R1 и R2 из указанных компонентов и в указанных пропорциях.

Шаг 3: участник, зная пропорции с11 и с13, берет по части содержимого своих бокалов Z и H1 и смешивает их в некоторой определяемой им пропорции r1, и ставит на стол третий бокал S1 c полученной смесью. Участник может показать значение r1 всем, включая бармена, хотя бармену оно неинтересно. Все, включая бармена, следят только за тем, чтобы в бокале S1 была смесь только содержимого из Z и H1. Затем, участник каким-то образом готовит содержимое четвертого бокала H2 и ставит его на стол. Участник может показать всем, как он готовит содержимое H2, а может и не показывать. В бокал H2 участник волен налить все что угодно и в каких угодно пропорциях, и даже, как и в бокал H1, налить совершенно неизвестную жидкость.

Шаг 4: бармен получает пропорцию с2 от генератора случайных пропорций, смешивает содержимое бокалов R1 и R2 в этой пропорции и ставит на барную стойку бокал R с полученным алкогольно-цитрусовым напитком. Все видят пропорцию с2, а также то, что содержимое R честно получено в этой пропорции из содержимого R1 и R2.

Шаг 5: участник, зная теперь еще и пропорцию с2, смешивает содержимое бокалов S1 и H2 в некоторой определяемой им пропорции r2 и наливает результат в пятый бокал S2, который ставит на стол. Все следят за тем, чтобы в S2 было налито только содержимое бокалов S1 и H2.

Шаг 6: электронному дегустатору наливают из бокалов R и S2. Если загорелась красная лампочка, то игра заканчивается ничем, участник платит за использованные напитки. Если загорелась зеленая лампочка, то процедура валидации считается пройденной.

Теперь проводится финальная проверка: участник сообщает всем рецепт, т.е. компоненты и процентный состав содержимого своего бокала Z. Бармен готовит указанный состав и открыто сравнивает его на электронном дегустаторе с остатками содержимого в бокале Z, тем самым позволяя всем убедиться в том, что участник правильно назвал рецепт содержимого Z. Если участник дал неправильный ответ, то игра заканчивается ничем, участник платит за использованные напитки. Если же согласно рецепту оказалось, что в бокале Z присутствуют одновременно алкоголь и цитрусовый сок, то участник выигрывает и забирает себе всю выпивку с полок бара, которой там много.

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

Для посетителей бара это может быть неочевидно, они рассуждают приблизительно так: допустим, мы не будем добавлять в бокал Z никаких других компонентов кроме рома, водки, лимонного и апельсинового соков, потому что если мы добавим что-то еще, например, молоко, то оно обязательно будет присутствовать в S2 и, таким образом, в S2 всегда будет что-то, отличающееся от R. Но если мы нальем в Z, например, ром и лимонный сок, то зная c11, c13, c2 и обладая возможностью выбирать содержимое H1, H2 и пропорции r1, r2, мы всегда сможем уравновесить состав S2 так, чтобы он стал идентичной версией R.

Таким образом, посетители бара начинают участвовать в конкурсе, стараясь обмануть процедуру валидации. Но, увы, никто из них не способен подобрать H1, а затем и r1 и H1 в ответ на c11 и c13, затем r2 в ответ на c2 так, чтобы составы S2 и R оказались одинаковыми, если в Z присутствуют в ненулевых пропорциях алкоголь и цитрусовый сок.

Со временем становится понятно, что если налить в бокал Z, например, только алкоголь, т.е. смесь рома и водки, налить в H1 чистую водку, затем подобрать r1 так, чтобы в S1 получилось то же самое, что и в R1, а в H2 налить лимонно-апельсиновую смесь в пропорции c13, то в S2 можно легко получить то же самое, что и в R.

Часть 2

Видя угасающий интерес к игре, владелец бара объявляет о том, что теперь, если игра не закончилась на пятом шаге процедуры валидации, то финальная проверка будет более мягкой. Теперь финальная проверка будет следующей: если доказано, что в бокале Z находится только алкоголь, то достаточно предоставить доказательство того, что в одном из бокалов H1 или S1 присутствует цитрусовый сок, и тогда участник выигрывает. Если же доказано, что в Z находится только цитрусовый состав, то достаточно предоставить доказательство того, что в одном из бокалов H1 или S1 присутствует алкоголь, и тогда участник тоже выигрывает.

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

Владелец бара объявляет о том, что теперь при составлении содержимого всех бокалов в игре можно использовать генератор анти-напитков. В генератор случайных пропорций добавляют отрицательные пропорции, то есть, один из компонентов при смешивании пропускается через анти-генератор. Процедура валидации остается прежней, только с одним условием: никакое из соотношений r1 и r2 не должно быть нулевым, а также ни один из бокалов во время валидации не должен оказаться пустым. Под чистой алкогольной смесью теперь понимается смесь, состоящая только из алкогольных компонентов, добавленных в положительной или отрицательной пропорции, точно так же как и в случае с чистой цитрусовой смесью.

Ну уж теперь, казалось бы, процедуру валидации и облегченную проверку можно будет обойти и выиграть. Однако, по-прежнему никто не в состоянии подобрать H1, затем r1 и H1 в ответ на c11 и c13, затем r2 в ответ на c2 так, чтобы составы S2 и R оказались идентичными, если в Z, H1 и S1 присутствует что-то, отличающееся либо от чистой смеси рома и водки, либо от смеси лимона и апельсина.

Часть 3

Процедура валидации, придуманная владельцем бара, похожа на криптографическую схему Lin2-Xor леммы в драфте на eprint. Заметив это сходство, горожане интересуются, почему смеси напитков в бокалах ведут себя как элементы циклической группы простого порядка, где discrete logarithm problem is hard, или даже как точки основной подгруппы криптографической кривой ed25519, используемой в системе Zano?

Ответ прост: при условии наличия генератора анти-напитков, смеси напитков в бокалах обладают теми же свойствами, что и точки основной подгруппы кривой ed25519. Вернее, у точек на ed25519, конечно же, больше интересных свойств, но свойства, используемые в Lin2-Xor лемме, те же самые.

Поэтому, если кто-то из участников конкурса все-таки сможет выиграть всю выпивку с полок, это будет подразумевать опровержение Lin2-Xor-леммы.

Каким образом такие чистые напитки, как ром, водка, лимонный и апельсиновый соки в емкостях у бармена соответствуют точкам (элементам группы) P1, Q1, P2, Q2 в условии леммы? Точки P1, Q1, P2, Q2 обязаны быть такими, чтобы ни одна из них не являлась линейной комбинацией (смесью) других из этого же набора. Это достигается путем применения идеальной хэш-функции на точках кривой. То же самое проделываются и с базовыми напитками. Например, лимонный сок не должен получаться путем смешивания рома, водки и апельсинового сока в любых, в том числе и отрицательных пропорциях.

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

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

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

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

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

Часть 4

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

Процедура валидации теперь немного удлиняется. Вместо двух первых шагов, на которых, с одной стороны, бармен генерирует случайные пропорции вначале (с11, с13), а затем с2, и, соответственно, смешивает базовые напитки, а с другой стороны, участник составляет вначале пропорцию и бокал (r1, H2), а затем пропорцию r2, и смешивает свои напитки, теперь происходят три шага. Со стороны бармена эти три шага выглядят как генерация (с11, с13), затем (с21, с23), затем с3, и, соответственно, смешивание. Co стороны участника три шага выглядят как составление (r1, H2), затем (r2, H3), затем r3, и смешивание.

При этом оказывается, что процедура валидации пропускает только указанные выше четыре смеси, и непонятно, как ее можно обмануть. Более того, если у бармена будет шестнадцать базовых напитков и он будет генерировать (с11, с13), (с21, с23), (с31, с33), с4, а участник будет генерировать (r1, H2), (r2, H3), (r3, H4), r4, то процедура валидации будет пропускать только восемь смесей пар базовых напитков. Таким же образом можно использовать 32 базовых напитка, 64, 128 и т.д., и получать одну из, соответственно, 16, 32, 64 смесей пар напитков. Это протокол Lin2-Selector леммы.

Вернемся к точкам на криптографической кривой. Если взять, скажем, 1024 базовых точек, объединенных в 512 пар, то протокол Lin2-Selector леммы позволяет выбрать линейную комбинацию точек из ровно одной пары, не пропуская никакие другие точки или комбинации. При этом требуется порядка log(1024) шагов, т.к. каждое удвоение базового набора точек требует прибавления одного шага в процедуру верификации.

Если провести аналогию с Merkle Tree, то, не вдаваясь в детали реализации, там так же, для доказательства принадлежности некоторого элемента к некоторому фиксированному множеству элементов требуется создать журнал шагов. Основное отличие состоит в том, что в Merkle Tree мы обязаны раскрыть тот элемент, для которого мы доказываем принадлежность к фиксированному множеству. В протоколе Lin2-Selector леммы мы достаточно легко можем хорошо скрыть тот элемент, для которого мы доказываем принадлежность к множеству.

В терминах игры в баре, корень Merkle Tree представляет из себя подобие бокала R, приготавливаемого барменом, хотя действия бармена для Merkle tree отличаются. А доказательство принадлежности напитка в стакане Z множеству базовых напитков представляет из себя последовательность из log числа бокалов H1, H2, H3, . При этом для Merkle tree критически важны как состав содержимого бокалов, так и точный объем содержимого. В то же время, для протокола Lin2-Selector леммы объем содержимого бокалов не важен, важны только пропорции компонентов. В случае с Merkle Tree обойтись одними пропорциями никак нельзя.

Постойте, но ведь Merkle tree это не интерактивная структура данных, а протокол Lin2-Selector леммы и конкурс в баре - это интерактивные игры между двумя участниками, как же в таком случае сравнивать не интерактивную структуру с интерактивной игрой? Сравнивать можно, дело в том, что в криптографии многие интерактивные игры переводятся в неинтерактивные с помощью приема, называемого эвристикой Фиата-Шамира. Это настолько широко применяемый прием, что мы на нем не будем останавливаться, и рассматриваем неинтерактивную и интерактивную версии протоколов Lin2-Xor и Lin2-Selector одновременно. Т.е. мы сравниваем неинтерактивную версию протокола Lin2-Selector леммы и неинтерактивное Merkle tree.

Согласно Lin2-Selector лемме, чтобы скрыть элемент множества, доказывающий предоставляет не сам элемент множества, а этот элемент умноженный на какой-то секретный скаляр, а также предоставляет доказательство для него. Т.е. доказывающий предоставляет не тот конкретный бокал с апельсиновым соком, который у него есть, а, скажем, 1/379 этого бокала, и держит число 1/379 в секрете. А хорошо ли это скрывает апельсиновый сок в бокале? Ну, конкретно апельсиновый сок это не скрывает никак, но если ме говорим о точках криптографической кривой, то скрывает абсолютно, также, как например публичный ключ полностью скрывает приватный ключ. Это обусловлено тем свойством криптографической кривой, что discrete logarithm problem is hard на ней.

Может возникнуть логичный вопрос, зачем нужны пары элементов? Пары элементов нужны только для того, чтобы применять Lin2-Xor и Lin2-Selector леммы, это техническая необходимость. Мы делаем один из элементов в каждой из пар таким, чтобы доказывающий не мог его смешивать с другими элементами, это легко сделать. К слову, этот технический элемент только добавляет анонимности.

Как сказанное выше соотносится с линкинг тегом, не забыли ли мы про него? А линкинг тег формата CryptoNote (совсем немного модифицированный) нам только помогает, т.к. если смешать этот линкинг тег с публичным стелс-адресом, то у нас получается как раз линейно независимый базовый элемент, который нам нужен в Lin2-Xor и Lin2-Selector леммах. Чтобы получить log-size ring signature, мы составляем базовые элементы кольца именно таким образом, а затем отправитель анонимно доказывает, что он знает приватный ключ одного из этих элементов.

Заключение

Надеюсь, вам понравилась статья. Ну а если кто-то заметил ошибки тут или в самой работе, пишите нам - мы всегда рады оппонентам!

Подробнее..

Зачем ROM и RAM криптовалютчикам?

24.03.2021 10:15:26 | Автор: admin


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


Погружение в Блокчейн


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

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

Я люблю Kingston fkgkd240ckro3
Я люблю Хабр gkfs40sfvmggr
Я люблю Kingston и Хабр fscm2clg5c0r5

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



Вот и получается, что каждая транзакция в блокчейне проходит через Хэш. Для новой транзакции берётся хэш-значение предыдущей операции и хэшируется в связке с новой. И всё это становится частью следующей транзакции.

Если вы злодей, который хочет сказать, что второй транзакции не было, то вам нужно пересчитать хэш от 2-ой транзакции, что изменит результат 3-ей, которую тоже надо пересчитать и так далее. А ведь это не мешки ворочать. Придётся запастись огромной вычислительной мощностью и даже это вам не поможет.

Блокчейн децентрализован, то есть записи об операциях не хранятся в одном месте. Никто не может что-то поменять и навязать остальным, что так и было. Аналогичные журналы с операциями находятся у сотен/десятков/тысяч. Чувствуете? Запахло памятью.

Основы майнинга


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

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

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

Майнинг и память


Ранее уже говорилось, что каждая криптовалюта скрывает в себе свой дивный мир с палками и колёсами. Этим и объясняется совершенно разный подход к железу. Логично, что одна и та же видеокарта добывает разное количество коинХабов и КриптоКингстонов за один промежуток времени. При этом основные ресурсы берутся с видеокарты: GPU + видеопамять. Но закон везде один: со временем стучать киркой становится сложнее.

Но при этом стоит учитывать время поднятие системы при отказе. В таком случае выгодно использовать SSD, пускай даже и маленький. Им же легко компенсировать маленькое количество оперативной памяти, например, 4 ГБ DDR4. Этого объёма достаточно для работы с bitcoin на машине под управлением Windows. Главное расширить файл подкачки хотя бы до 16 ГБ. Впрочем, давайте смотреть подробнее.

Зависимость от RAM


Она наступает тогда, когда вы имеете дело с более сложной криптовалютой. Bitсoin хэширует лишь информацию об операции, а в случае с Ethereum, блокчейн может содержать микропрограммы. И вот вместо 4 ГБ, ОЗУ подрастает до 8 ГБ.


Вторым важным моментом является майнинг при помощи процессоров. У видеокарты есть видеопамять, а у процессора кента нет. Для него боевым товарищем становится оперативная память и качество её работы напрямую влияет на производительность майнинга, особенно если вы занимаетесь разгоном. В таком случае для продвинутого майнинга Monero (в конце 2019 года) на одном Ryzen 7 3700X требовалось 16 ГБ ОЗУ. И банальное повышение частоты с 2400 МГц до 3200 МГц приводит к реальным результатам.



Зависимость от ROM


Выше уже было напечатано, что SSD повышает скорость перезагрузки системы в случае ошибки. Вдобавок твердотельный диск требует меньше энергии, что снижает счёт за электричество. Но мы же на Хабре, давайте считать!

Считаем что:

Мы живём в Москве и платим по единому тарифу 5,56 рублей за Киловатт
SSD потребляет минимум 2 Ватта, а HDD не менее 6 Ватт

Тогда для HDD: (((6 x 24) x 365 )/ 1000)) x 5,56 = 292,2 рубля в год
Для SSD: (((2 x 24) x 365 )/ 1000)) x 5,56 = 97,4 рубля в год

Может быть, домашнему майнеру разница покажется смешной. Но если у вас работает огромная ферма из нескольких систем, то проще купить кучку SSD на 60/120 Gb, чем HDD на 250 ГБ. Вы получите не только быстрое изменение профиля разгона, но скоростное возобновление работы при критических ошибках.

Узлам без SSD никуда!


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

Так вот, у вас есть возможность стать полной нодой. Для этого придётся загрузить себе на диск всю историю транзакций с криптовалютой. Для Bitcoin-а в начале марта 2021 года требовалось 330 Гб. Причём со временем этот дамп будет расти, а ваша система сможет верифицировать операции.


Криптовалютчики частенько говорят, что держатели полных нодов благородные люди, которые помогают децентрализации сети. На самом же деле это связано с анонимностью, потому что, передавая данные другому полному ноду, вы не можете быть уверены, что вас не отследят. Так как запрос на внесение изменений в цепочку отправляется публично. А пряча свои тайные делишки операции в своёй ноде (для Bitcoin это Bitcoin Core), вы маскируете их. Дополнительно стоит отметить поддержку Tor.



А если мы вернёмся к Ethereum, то как и с RAM, станет только хуже. Среди рекомендуемых системных требований для узла: 16 Гб оперативной памяти и SSD на 500 ГБ. Если вам кажется, что это с запасом, то оставьте свои надежды Для полной синхронизации требуется не менее 5 Тб. А высокая нагрузка на всю сеть не позволяет использовать медленные HDD. Для справочки: за последний год полный архив подрос на 3 ТБ.



И таких смельчаков немало, публичные полные ноды можно отследить в режиме онлайн на специальной карте. В конце марта их оказалось 6,666 штук, а это минимум 34 719 дисков Kingston A400 по 960 Гб каждый, на общую сумму более 310 миллионов рублей.

Таким образом, только публичные ноды Ethereum можно оценить в 15 406 шести гигабайтных видеокарт GTX 1060, заказанных по средней цене на Ebay.



Шутка ли, но разработчик Bitcoin Core (ПО для полных нод Bitcoin) написал скрипт и насчитал в январе 2021 года более 30 тысяч полных нод с обновлёнными данными, хотя Coin Dance показывал только 11 619 полных нод. Интересно, у Ethereum такая же картина со скрытыми нодами?

Попрощаемся?




Не спешите бежать за твердотельным накопителем в магазин. Продажи SSD дисков оцениваются в миллионы штук ежегодно, так что в ближайшие пару лет дефицита не предвидится. Разве что не произойдёт очередной крипто-бум.

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

Что касается оперативной памяти, то мы видим явную необходимость в ней при майнинге на CPU. Такие фермы не занимаются добычей популярных валют, а сконцентрированы на узком кругу монеток: Cranepay, Binarium, Yenten, Monero.

Для получения дополнительной информации о продуктах Kingston Technology обращайтесь на официальный сайт компании.
Подробнее..

НАЛОГООБЛОЖЕНИЕ МАЙНИНГА И ПУТИ ЕГО РАЗВИТИЯ

04.03.2021 18:06:42 | Автор: admin

А.С. Ерашов, Высшая банковская школа Гданьска (aerashow@gmail.com)

Аннотация. Активное развитие Интернет технологий в 21 веке, и в частности развитие Блокчейн технологий последние 12 лет с момента создания первой криптовалюты Биткоина, вызывает необходимость пересмотра существующих налоговых взаимоотношений бизнеса и государства. В статье рассматривается вопрос возникшей в последние годы и активно развивающейся сферы майнинга. При этом существующие налоговые системы государств не только отличаются друг от друга, что создает майнерам сложности при международном бизнесе, но и созданные в прошлых веках налоговые системы не могут проводить эффективное налогообложение новейших технологий. В статье авторы предлагают вариант решения универсального для всех стран налогообложения майнинга, что позволит оптимизировать налогообложение майнинга. В настоящее время отсутствие международных налоговых стандартов может затруднять развитие отрасли и вести к недополучению доходов бюджетами разных стран. При этом, учитывая развитие новейших ИТ технологий, налогообложение рационально и эффективно было бы организовать на основе современных смарт-контрактов, которые легко можно встроить в сами агрегаторы майнинговых пулов для автоматически расчетов и оплат.

Abstract. The active development of Internet technologies in the 21st century, and in particular the development of Blockchain technologies for the last 12 years since the creation of the first bitcoin cryptocurrency, necessitates a revision of the existing tax relationship between business and the state. The article discusses the issue of the mining industry that has arisen in recent years and is actively developing. At the same time, the existing tax systems of states not only differ from each other, which creates difficulties for miners in international business, but also the tax systems created in past centuries cannot effectively tax the latest technologies. In the article, the authors propose a solution to the universal taxation of mining for all countries, which will optimize the taxation of mining. At present, the lack of international tax standards can hinder the development of the industry and lead to a shortfall in revenues for the budgets of different countries. At the same time, taking into account the development of the latest IT technologies, it would be rational and efficient to organize taxation on the basis of modern smart contracts, which can be easily built into the aggregators of mining pools themselves for automatic payments and payments.

Ключевые слова: майнинг, децентрализованная генерация, Доказательство выполнения работы, доказательство доли владения, налогообложение майнинга, криптовалюта, блокчейн, mining, decentralized generation, Proof of Work, Proof of Stake, Mining taxation, cryptocurrency, blockchain


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

Методы и материалы. В 21 веке с появлением майнинга возник феномен децентрализованной генерации потребительной стоимости информации [1]. И если, например, налогообложение генерации, распределения, хранения, продажи электроэнергии легко контролируемы, то для грамотного контроля налогообложения майнинга необходимо уже сейчас развивать современные механизмы взаимодействия между всеми сторонами процесса. В данной статье речь пойдет о самых распространенных системах майнинга POW и POS и вариантах их налогообложения

Майнинг POW это Доказательство выполнения работы (Proof of Work), принцип защиты систем от злоупотребления (например, от DoS-атак или спама), основанный на необходимости выполнения на стороне клиента некоторой достаточно длительной работы (нахождение решения задачи), результат которой легко и быстро проверяется на стороне сервера1.

Алгоритм POW, лежащий в основе первой криптовалюты Биткоина, позволял при ее создании энтузиастам майнить на компьютерах. Но сейчас для этого в основном необходимо дорогостоящее оборудование, в основном ASIC, и электричество, занимающее в расходах на майнинг львиную долю. Только сеть майнинга Биткоина, не учитывая другие криптовалюты, потребляет в год порядка 78 ТВт\ч электричества, что сравнимо с энергопотреблением целых стран (таких как Бельгия, Чили или Казахстан), но децентрализовано распределено по миру.

Майнинг POS это доказательство доли владения (Proof of Stake, дословно: подтверждение доли) метод защиты в криптовалютах, при котором вероятность формирования участником очередного блока в блокчейне пропорциональна доле, которую составляют принадлежащие этому участнику расчётные единицы данной криптовалюты от их общего количества.

Алгоритм POS в какой-то мере считается более совершенным именно из за отсутствия необходимости потребления большого количества электроэнергии и нанесения тем самым вреда экономике, хотя и считается что 75% майнеров используют энергию солнца, ветра и воды. Очевидно, что для становления крипто-сообщества POW был единственным возможным решением времени, в т.ч. для привлечения энтузиастов в мир блокчейна и заработка на майнинге с обычного ноутбука. В настоящее время не только Биткоин, но и некоторые новые криптовалюты также поддерживают протокол POW и он на ряду с POS будет занимать в мире майнинга большую долю ещё долгое время. При этом несмотря на то, что принцип PoS был описан уже давно, до изобретения Биткоина, именно PoW считается наиболее защищенным в смысле децентрализации.

Сегодня всё больше происходит централизация населения внутри крупных городах и вокруг них. При этом добыча электроэнергии выстроена по всей территории планеты. Электростанции расположены в порой отдаленных районах и цена электричества включает в себя большую долю доставки его до мегаполиса, обслуживания сетей и т.д. При этом не только цена самого электричества может быть в разы меньше вблизи мест его генерации, но и электростанции можно запустить на полные мощности, а некоторые из них вынужденны не работать на 100% из за отсутствия полного сбыта, в т.ч. из за дорогой с учетом доставки конечной для потребителя цены [2]. В отдаленных районах РФ, Канады и других стран также стоит проблема сжигания попутного газа при добыче нефти, в основном также из-за дороговизны его доставки конечному потребителю. Несмотря на подписанные большинством нефтедобывающих компаний соглашений о не превышении 5% выброса в атмосферу попутных газов, добываемых вместе с нефтью, и снижению его выбросов до 0% доли к 2030 году, некоторые добывающие компании до сих пор вынуждены платить огромные штрафы, так как газ просто некому продать, а его транспортировка и переработка не выгодны. Проблему перепроизводства электроэнергии некоторых районов и выброса попутного газа уже стали успешно решать майнинговые компании. По их инициативе (а в ряде случаев уже даже по инициативе нефтедобывающих компаний), на месторождениях ставятся газогенераторы и майнинг-контейнеры. Также майнинг ставится в местах переизбытка генерации электроэнергии крупными электростанциями, так как в моменты пиковой нагрузки перепады электроэнергии приходится куда то скидывать. Создаваемые таким образом майнинговые фермы в основном ради добычи Биткоинов в настоящее время решают и экологическую проблему мирового масштаба и экономические проблемы нефтедобытчиков и производителей электроэнергии [3]. При этом в будущем такой рационализаторский подход будет все чаще (как в случаях с арбитражем в трейдинге) выискивать дешевые точки покупки электроэнергии, устанавливать майнинговые фермы, и тем самым оптимизировать энергопотребление планеты и улучшать экологию. Также в связи с развитием ИТ-технологий и развитием блокчейна в различных сферах, подобные майнинговые фермы будут являться вычислительными центрами различных проектов, в т.ч. децентрализованного хранения данных (по типу проекта filecoin).

В будущем целые поселения, расположенные вблизи добычи газа или попутного газа, смогут благодаря дешевой электроэнергии стать центрами обработки информации благодаря майнингу, и уже сейчас нужно создавать технологические механизмы корректного налогообложения, чтобы налоги оптимально распределялись по данным территориям, а не уплачивались по месту регистрации крупной ИТ компании, владеющей майнинговой фермой через офшор. Для этих целей необходимо (в том числе на уровне смарт-контрактов) предусмотреть возможность автоматической оплаты электроэнергии, что позволит вести корректный учет её потребления в конкретном месте и автоматически оплачивать налоги по территориальной принадлежности, создавая блага за счет них в месте их оплаты [4; 5].

Можно предположить, что было бы правильно обложить налогом майнинг в процентном отношении от количества используемого электричества. Но такой подход будет стимулировать их избегать официальных регистраций и подключать неучтенное электричество, а частные майнеры и вообще массово уйдут в серую зону. Тем не менее, учитывая что майнинг и информация о нем доступна в общественном блокчейне, налогообложению должен подлежать исключительно полученный майнером доход от найденных им блоков (с учётом сложности их добычи и понесенных расходов). Предлагается в смарт-контракты расчета налогов импортировать публичные данные из сетей блокчейн о добыче официально зарегистрированными майнерами определенного количества криптовалют. Далее уже в ручном (а в последствии и автоматическом режиме) при постепенном переходе на оплату электроэнергии и других расходов криптовалютами, смарт-контракты смогут автоматически рассчитывать суммы налогов к уплате и производить оплату из кошельков майнеров в бюджеты различных уровней. При этом страны, полностью запрещающие оплату товаров криптовалютами, теряют в своём развитии из-за невозможности автоматизации налоговых платежей смарт-контрактами, а также отсутствия публичных блокчейн-реестров проведенных транзакций. Единственным вариантом не отстать от прогресса будет введение CBDC как контролируемого государствами блокчейна и переводом в расчеты на него государственных и частных компаний [6].

Если в начале 21 века такой подход к цифровизации и обеспечению публичности платежей лежал больше в политической сфере, то с учетом развития блокчейн технологий и массового создания новых экономических ценностей (благодаря децентрализованной обработке информации), необходимость налогового учета их уже является вопросом выживания национальной экономики в условиях цифровой глобализации [7; 8].

Необходимо также учитывать, что частный майнинг на индивидуальном компьютере уже практически невозможен, вследствие чего майнеры объединяют свои мощности в пулы для большей эффективности. Такие пулы обычно публичны, легальны, легко контролируемы. Информация об участниках пула может быть доступна налоговым службам или публиковаться в общественном реестре для использования налоговыми органами. Но стандарты самой информации и её передачи необходимо согласовывать на международном уровне с обязательным привлечение самого крипто- и научного сообществ, так как в основном крупные майнинговые пулы это международные организации, включающие в себя децентрализованные мощности майнеров по всему миру, не принадлежащее какой то одной налоговой юрисдикции. При этом учитывая либеральные взгляды многих участников криптосообщества, необходимо для снижения негативного фона и напряжения от взятия под контроль децентрализованных процессов, оставлять майнерам небольших новых блокчейнов возможность добровольно предоставлять информацию о полученных доходах, как по согласованной международным сообществом схеме учета блокчейн транзакций, так и в виде налоговых отчетов их страны [9; 10].

Результаты. Выше был описан пример налогообложения майнинга POW. При этом налогообложение майнинга POS как доказательства доли оставляет не меньше вопросов. Если при POW можно хотя бы по наличию большого потребления электричества определить территориальную принадлежность майнера, то при майнинге POS такой учет происходит исходя из наличия на кошельках майнеров определенного количества монет для подтверждения транзакций (например, 32 монеты для ETH). Для налогообложения таких майнеров также необходимо выработать международные стандарты получения и передачи в налоговые резиденции информации из сети блокчейн. При этом следует учитывать, что за децентрализацией далеко не все майнеры желают скрывать своё местоположение и избегать уплаты налогов. Крупные компании, такие например как ETHEREUM, организующие пулы майнинга для своих сторонников и уже сейчас переходящие на POS, могут передавать в автоматическом режиме в налоговые органы данные о необходимом к уплате налоге по месту физического расположения владельца крипто-кошелька. При этом со временем можно было бы автоматически изымать часть средств майнера и распределять их на налоговые кошельки, но для этого вначале нужно перейти на платежи в криптовалютах, чтобы помимо учета прибыли учитывать также и в затратах майнера. И даже в случае если со временем налоговые инструкции по международным стандартам и соглашениям смогут обязывать майнинговые пулы автоматизировать в смарт-контрактах налоговые отчисления, то скорее всего необходимо будет лишь откладывать на специальные кошельки данные средства, автоматически изъятые у пользователей, а затем при согласовании годового отчета (уже учитывая понесенные затраты) часть средств возмещать, а часть переводить на налоговый крипто-счет.

Также большим плюсом крипто-мира может служить то, что депонированные на налоговые отчисления средства могут не просто лежать на определенном счёте, а работать также как майнинговый пул, принося собственникам доходы. Если в классической экономике средства, подлежащие возврату предпринимателю или частному лицу, могут долго лежать на счетах налоговых органов без какого-либо движения, то в криптомире такие средства могут служить таким же POS-майнинг пулом. Уже после принятия окончательного решения о распределении средств между налоговыми органами и плательщиками налогов, суммы налогов будут пересылаться обоим сторонам с учетом добавления заработанного дохода POS-майнинга за время депонирования. Учитывая объёмы налоговых платежей в мире и глобальность крипто-экономики, именно такие пулы депонированных налоговых отчислений могут стать дополнительной децентрализованной гарантией поддержания стабильности POS блокчейнов2.

Обсуждение. Необходимо начать научное обсуждение возможности создания новых налогов на майнинг, по аналогии акциза (на единицу ASIC, например) и вменённого дохода для небольших майнеров. Орадно, что уже существует понимание необходимости координации деятельности государств в сфере налогообложения майнинговой деятельности3. Такие новые системы налогообложения могут заменить, например, принятые в домайнинговом мире налоги, сделав налообложение майнинга более оптимальным и соответственно быстрее добровольно принятым в майнинг сообществе, так как основной задачей налогов считается не репреcсивные меры, а построение сбалансированной экономики.

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

1 Cryptocurrency Market Capitalizations // CoinMarketCap.com (http://personeltest.ru/aways/coinmarketcap.com/currencies/bitcoin Дата обращения: 12.02.2021).

2Рейтинг криптовалют на 2021 год: онлайн-курс топ-10 в реальном времени. Список лучших криптомонет по капитализации и популярности // Profinvestment.com (http://personeltest.ru/away/profinvestment.com/crypto-currency-rating Дата обращения: 12.02.2021).

3https://youtu.be/tDXwHFwn1NI

Список литературы

  1. Генкин, А.С. (2005). Частные деньги: осмысление роли и места в современном мире // Финансы и кредит, 29 (197), 80 с.

  2. Бортников М.А., Каранина Е.В. Становление и развитие концепции энергетической безопасности // Сборник материалов XIII Всероссийской научно-практической конференции с международным участием Экономические аспекты развития России: Микро- и Макроуровни. Киров, 2020, с. 820-828

  3. Вайсулов К.М., Алибеков Ш.И. Проблемы развития цифровой экономики региона (на примере Республики Дагестан) // Социально-экономические и финансовые аспекты развития Российской Федерации и её регионов В современных условиях. Материалы I всероссийской научно-практической конференции. Грозный, 2020, Издательство: Чеченский государственный университет (Грозный), С.282-284

  4. Сайдулаев Д.Д., Сулейманов И.Р. Основные подходы к понятию налогового администрирования // Modern Science, 10-1, 2019, с. 64-67

  5. Сайдулаев Д.Д. Концептуальные основы налогового менеджмента // Экономика и предпринимательство, 7 (108), 2019. С. 951-954.

  6. Чаплыгин, В.Г., Дельцова, Т.А. (2018). Анализ взаимосвязи криптовалюты биткоин с использованием корреляционного-регрессионного анализа // Вестник Балтийского федерального университета им. И. Канта. Серия Гуманитарные и общественные науки, 2, 70-79.

  7. Чаплыгин В.Г. Устойчивость и равновесие, кооперация и координация в глобальном пространстве: Дж. Нэш versus Г. Штакельберг // Известия Томского политехнического университета. 2004. 2(307). с.173-176

  8. Чаплыгин В.Г., Курьянов А.М. Актуальные проблемы денежно-кредитной политики в странах Центральной и Восточной Европы и методы их решения // Вестник Калининградского юридического института. 2005. 2(8)

  9. Пашковская И.В. Перспективы развития национального денежного обращения в условиях цифровой экономики // Вестник Евразийской науки, 2018 2, https://esj.today/PDF/75ECVN218.pdf (доступ свободный). Загл. с экрана. Яз. рус., англ.

  10. Попова Е.М., Бандурко С.А. Анализ финансовых рисков в криптоэкономике с учетом информационного влияния // Известия СПбГЭУ 2017 6(108), 36-40.

    Оригинал статьи находится в журналеУправленческий учет Выпуск 1 (2021) стр. 152-156. Ссылка на автора и источник при копировании обязательна.

    Ссылка общую информацию о статье в Российском индексе научного цитирования


Подробнее..

Криптовалюта как инструмент налогового администрирования

04.03.2021 18:06:42 | Автор: admin

А.С. Ерашов, Высшая банковская школа в Гданьске (e-mail: aerashow@gmail.com)


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

Abstract. One of the principles of the classic election campaign is the competition of ideas and methods of distribution of public goods obtained from taxes and the tax rates themselves. At the same time, it is important not only to be able to create and maintain an optimal system for collecting and distributing taxes, but also to provide the public with open information about the processes and prospects taking place in this matter as clearly as pos sible. And the more democratic a society is, the more such an understanding is in demand. New technologies of blockchain and cryptocurrencies, in particular, make it possible to create improved systems for both collecting and distributing information, and conveniently involving public control. And the sooner countries adopt it for mass use, the more successful their economies will be.

Ключевые слова: блокчейн, криптовалюта, криптотехнологии, стайблкоины, Биткоин, ETH,
смарт-контракт. blockchain, cryptocurrency, cryptotechnologies, stablecoins, Bitcoin, ETH, smart contract.


Введение. Многие действия невозможно сделать в одиночку, и для их реализации каждый гражда нин передает часть своего дохода обществен ным организациям, преимущественно государ ственным. Если купить еду, одежду, транспорт, жилье может позволить себе практически каж дый гражданин имеющий работу, то например строительство дорог, содержание и управлением образованием, медициной, безопасностью и т.д. принято отдавать на общественное управление и финансирование. К сожалению, принцип и суть налогов лишь частично, если и вообще объясняется в базовом образовании, и большинство граждан считают оплату налогов некоей обязанностью и не понимают их полезность. Также негативному отношению к оплате налогов способствуют коррупционные скандалы и непрозрачность их сбора и распределения. Идеи либертарианства, активно развивающиеся с середины XX века, в некоторых крайних формах даже отвергают необходимость налоговых отчислений и делается это больше не от бунтарства, а от непонимания полезности налоговой систе мы.

Основные результаты исследования. В современной финансовой системе, к сожалению, не имеется достаточно технологий для контроля налоговой системы, которую готовы принять даже убеждённые либертарианцы. Нет не только технической возможности открытого контроля за сбором и распределением налогов, но и законодательно и ментально общество не готово открывать данные о своих счетах, оборотах товаров и накопленном благосостоянии. Тем не менее, принятие криптовалют и свойственных им публичным данным о транзакциях, происходит повсеместно по мере взросления молодежи, привыкшей к интернет-деньгам. Начиная с компьютерных игр, молодежь знает, что деньги как универсальные товары обменивающиеся на любые другие товары/услуги, могут быть не только деньгами центрального (национального) банка страны, но и виртуальными, игровыми и т.д. Широко распространенный обмен геймкоинами и NFT (non-fungible tokens - новый класс виртуальных активов) на реальные товары, в т.ч. через через блокчейн технологии, ускоряет внедрение криптовалют в масмаркет. Уже сейчас купить некоторые товары и услуги проще за интернет деньги, нежели с помощью классических денег [6].

Многие современные финансовые киты, такие как Bank of America и другие, опасаются массового перехода граждан на использование криптовалют. Они публикуют результаты исследований, что чем глубже будет внедрение электронных денег, тем быстрее будут уменьшаться депозиты граждан на счетах в банках (тогда как наличие депозитов и их использование банками позволяет банкам получать значительные доходы). Также банки понимают, что постепенно возможности их контроля за распределением бюджетных средств будет сведена к минимуму. К сожалению, некоторые крупные финансовые институты активно препятствуют переходу к криптовалютным платежам, и в отличии от, например производителей бумаги, при переходе на электронные деньги, у финансовых организаций гораздо сильнее лобби для блокировки принятия политических решений правительствами. Есть мнение, что вскоре банки будут похожи на амбары, которые хранили и меняли рис как универсальное средство платежа, во время появления металлических и бумажных денег. Банкам уже сейчас стоит перестраиваться используя имеющиеся перед блокчейн-компаниями преимущества (такие как реальные офисы, проведение KYC, управление активами вкладчиков и т.д.) [4]. Учитывая объемы имеющихся у банков баз данных, можно предположить, что те банки, которые первыми включатся в борьбу за криптоплатежи пользователей, еще смогут успеть составить конкуренцию даже крупных криптовалютным системам. В связи с этим банки уже сейчас охотятся за специалистами не просто в банковском секторе и не просто фриками крипто-энтузиастами, с универсальными профессионалами. Можно предположить, что передовые коммерческие банки сольются с биржами и примут эти технологии как когда-то приняли кредитные деньги вместо золота. События 2020 года в сфере слияний и поглощений в крипто-мире, по объему не уступающим доковидному 2019 году, подтверждают это. Также хорошим сигналом для крипто-мира стал прорывной рост Биткоина выше 24000 долларов. В 2020 году многие страны, пытаясь бороться с последствиями корона вируса для своих экономик, стали проводить политику мягких денег, значительно увеличили бюджетные расходы и т.д. Например, только за 2020 год ФРС США выпустила в оборот порядка 21% всех напечатанных за последние 30 лет долларов. Это стало одним из важнейших факторов прихода в крипто-мир крупный финансовых организаций с целью защиты средств от обесценивания.

Используя криптобиржи и прямые удобные инвестиции в криптоакции (Security Tokens, Equity Tokens, ETH, NFT), большое количество домохозяйств имеет возможность сглаживать колебания мирового фондового рынка и ещё больше снизят возможности ценовых манипуляций крупными игроками. Так же они получат дополнительные доходы от сбережений, которые дадут плюсы в экономики их стран не только виде налогов, но и новых тратами, росте ВВП в целом. При этом риски снижения депозитов в банках и изымания денег из экономики нивелируются инвестиционными вложениями домохозяйств, но произойдет это при по настоящему удобном, простом, но в то же время безопасном механизме реализации таких инвестиций. Чтобы бегство частных инвесторов из инфляционного фиатного мира не разгоняло криптоинфляцию и не создавало необоснованных хайпов роста криптовалют, крайне важно запустить возможность удобного инвестирования средств граждан, изъятых в т.ч. из депозитов в криптоэкономику и в криптоакции реальных компаний. При этом также важно создать минимально необходимые обязательные курсы инвестора, на знания которых будут обязаны проверять онлайн банки/биржи, как же как осуществляют сейчас проверку KYC, для недопущения перехода средств из криптовалют в криптоакции, по аналогии с печальным опытом ICO [5].

2019 год многие называли годом стейблкоинов. Многие биржи, компании и даже частные обменные пункты поняли удобство использования стейблкоинов пользователями и стали их применять в своей работе. Европейский ЦБ совместно с ФРС стали осознавать, что теряют контроль над валютами и начали вводить как общие запреты на стейблкоины (в Европе например https://ru.crypto-news.io/news/evrosoyuz-zapretil-steiblkoiny-iz-za-kriptovalyuty-libra.html), так и бороться с попытками введения мультивалютного стейблкоина компанией Фейсбук. В связи с всевозрастающим приходом в криптомир трейдеров из мира фиатных валют, стейблкоины стали инструментом, по отношению к которому ведутся все остальные торги. Частные и коммерческие международные переводы, которые зачастую сложно делать в банковской системе, тоже все чаще стали использовать вместо Биткоина стейблкоины, а Биткоин стал скорее средством инвестиций как цифровое золото, а не средством платежа. Мелкие обменные пункты, специализирующиеся на обмене криптовалют на фиатные деньги, также в основном используют стейблкоины в операциях с клиентами и между собой, во избежание риска колебаний курсов в процессе осуществления даже краткосрочных операций. Благодаря всем этим факторам в 2020 году рынок стейблкоинов продолжал развиваться и достиг нескольких десятков миллиардов долларов, предоставляя пользователям в технологическом мире блокчейна и криптовалют защищенную гавань сохранения капиталов во время финансового шторма.

В 2020 году также знаменательным стал факт оплаты американскими властями помощи венесуэльским врачам, используя частные стейблкоины USDC (https://forklog.com/pravitelstvo-ssha-privleklo-emitenta-stejblkoina-usdc-dlya-podderzhki-oppozitsii-v-venesuele). Возможно поняв все удобство использования стабильной криптовалюты и в т.ч. обхода даже международных ограничений, в конце 2020 года власти США всерьез взялись за регулирование стейблкоинов, изъявив намерение лицензировать их выпуск (https://beincrypto.ru/v-ssha-predlozhili-zapretit-neliczenzionnye-stejblkoiny ).

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

Сами стейблкоины как криптовалюта, основанная на Блокчейне как защищенной публичной базе данных, привязаны к какой-либо фиатной валюте по установленному курсу (обычно 1:1 к американскому доллару). Гарантом такой привязки к курсу формально является обеспечение, хранящееся у компании, выпустившей такой стейблкоин. В этой связи у многих экономистов возникают вопросы почему сами страны не выпускают стейблкоины, привязанные к их валютам, где гарантом выступает Центробанк страны, отвечающий за финансовую политику и по сути обеспечением является вся масса выпущенных под такою стабильную криптовалюту фиатных аналогов, да и сама экономика страны [1]. Если бы Центробанки были бы коммерческими организациями, нацеленными на получение прибыли в т.ч. за счет быстрого внедрения новый технологий, то можно предположить, что государственные CBDC были бы выпущены уже несколько лет назад. Отметим, что государственные финансовые организации очень консервативны, а многие чиновники не имеют достаточного образования и опыта в новых технологиях, чтобы оперативно применять их в целях развития организации.. Такая задержка внедрения Блокчейн технологий со стороны государств уже сказывается на политических рейтингах их руководителей.

В этом плане Китай, как один из мировых лидеров, является показательным примером успешного дальновидного планирования и своевременного применения новых технологий. Китайские власти уже несколько лет разрабатывают собственную криптовалютную систему, и пока в мире шло публичное частное тестирование многих технологий, впитывали все новинки и запустили CBDC для массовых платежей в 2020 году. Уже прошли многомиллионные испытания с айрдропом раздачи криптовалюты для тестов гражданам и страна открыто заявляет, что к моменту проведения олимпиады старается потеснить США в плане лидера финансового мира. Да, в Азиатско-Тихоокеанском регионе есть и недовольные частные компании, например казино в Макао (https://forklog.com/bloomberg-vnedrenie-tsifrovogo-yuanya-izmenit-igrovuyu-industriyu-makao ), опасающиеся внедрения цифрового юаня, но это скорее всего частные случаи и еще сама практика массового применения китайского CBDC только начинает формироваться и многие уверены, что плюсов от таких технологий будет больше чем минусов. Китайские власти, разумеется, пытаются усилить контроль за доходами и расходами граждан и по этому в использовании китайской CBDC есть много ограничений, но это скорее связано со спецификой общественных взаимоотношений и управления 1,5 миллиардным населением страны. При всем при этом развитие CBDC как финансовой технологии в целом ставит Китай на шаг впереди по сравнению даже со странами Европы и Северной Америки.

Российские власти в конце 2020 года ввели значительные ограничения и усилили контроль за криптовалютами, вплоть до уголовной ответственности. Хотя ЦБ РФ и проводит консультации и совещания с ключевыми игроками финансового рынка (такими как платежная система QIWI и крупные банки), но все же политика запретов и ограничений показывает, что правительство РФ выбрало путь скорее похожий на китайский, чем на более открытый, применяемый в иных государствах.

Технология Блокчейна KYP (Know Your Partner), разрабатываемая автором статьи совместно с командой программистов в настоящее время, может быть полезна с точки зрения удобной идентификации блокчейн кошельков. Ведь для многих пользователей, отпугивающим фактором является именно абсурдное по их мнению непонятное название номер кошелька. В Блокчейне KYP кошельки могут быть как такие же анонимные с произвольными набором букв и цифр, так и именные [2]. Благодаря именным кошелькам создается возможность построения понятной системы обращения, подобной уже привычной всеми системы DNS, применяемой к названиям сайтов. Как и до появления удобной классификации сайтов, при раннем написании их адресов номерами типа 192.168.0.1 массовое принятие обывателями интернета было бы затрудненно, так и запуск блокчейна KYP вполне может дать прорывной толчок в массовом развитии криптотехнологий в ежедневном обращении. Такая структурированная именная технология, которая вскоре будет опубликована в WhitePaper KYP и представлена после проведения дополнительных тестов, может вполне быть применима и в государственных блокчейнах CBDC при их проектировании и снимет барьер принятия блокчейна обывателями.

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

Уже сегодня существую различные смарт-контракты по оптимизации приема криптовалютных платежей. Например сервис потокового видео Spotify уже заявил о удобном использовании криптоплатежей, такие же технологии можно довольно просто применять для любого прослушивании/просматривании контента, учебных занятиях, игр, коуч-мероприятиях, онлайн тренировках и т.д. Плагин EthereumAds, работающий в системе WordPress, позволяет получать доход от баннерной рекламы напрямую на кошельки Ethereum. ООН совместно с компанией LTO Network запустило программу верификации прав на недвижимость goLandRegistry. В недавнем опросе среди пользователей Paypal 65% из них заявили, что им было бы удобно платить криптовалютами и с использованием QR-кодов. При этом и Центробанк РФ обязал банки страны ввести возможность оплат и переводов оп QR-кодам, понимая технологическое удобство таких методов, а такие оплаты изначально приняты в крипто-мире и являются техническим шагом на встречу для массового применения криптовалют.(http://personeltest.ru/aways/www.forbes.ru/newsroom/finansy-i-investicii/413719-cb-ustanovil-dedlayn-dlya-vvedeniya-bankami-qr-platezhey-cherez ). Власти Таиланда объявили о проекте учете налогов в блокчейне, старясь поднять не сами налоги, а их собираемость. Также они подтверждают, что придерживаются мнения, что учет продаж товаров в блокчейне поможет за счет его прозрачности собирать статистику и получить правдивые данные о реальном экспорте нефти.(http://personeltest.ru/aways/www.bangkokpost.com/business/2031099/). Как заявлял глава комитета Госдумы РФ по финансовому рынку Анатолий Аксаков, одним из основных аргументов принятия закона о криптовалютах в РФ была необходимость налогообложения криптовалютных доходов [3].

При оплате криптовалютами в момент оплаты смарт-контракт может автоматически изымать часть платежа подакцизного товара и отправлять на кошелек налогового органа. При этом решается вопрос не только самого механизмы уплаты налогов и прозрачности их сбора, но и упрощаются сбор статистических данных и ведение статистических отчетов [7]. Также предоставляется возможность оперативного реагирования на ситуацию не только налоговыми органами, но и например поставщиками товаров в места их продаж, при этом законодательные механизмы доступа к такой информации должны быть максимально проработаны, согласованны с обществом и доступны с согласия торговых точек определенным кругам лиц в целях улучшения экономических моделей.

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

Библиографический список

  1. Вайсулов К.М., Алибеков Ш.И. Проблемы развития цифровой экономики региона (на примере Республики Дагестан) // Социально-экономические и финансовые аспекты развития Российской Федерации и её регионов В современных условиях. Материалы I всероссийской научно-практической конференции. Грозный, 2020, Издательство: Чеченский государственный университет (Грозный), С.282-284

  2. Сайдулаев Д.Д., Сулейманов И.Р. Основные подходы к понятию налогового администрирования // Modern Science, 10-1, 2019, с. 64-67

  3. Сайдулаев Д.Д. Концептуальные основы налогового менеджмента // Экономика и предпринимательство, 7 (108), 2019. С. 951-954.

  4. Чаплыгин, В.Г., Дельцова, Т.А. (2018). Анализ взаимосвязи криптовалюты биткоин с использованием корреляционного-регрессионного анализа // Вестник Балтийского федерального университета им. И. Канта. Серия Гуманитарные и общественные науки, 2, 70-79.

  5. Чаплыгин В.Г. Устойчивость и равновесие, кооперация и координация в глобальном пространстве: Дж. Нэш versus Г. Штакельберг // Известия Томского политехнического университета. 2004. 2(307). с.173-176

  6. Чаплыгин В.Г., Курьянов А.М. Актуальные проблемы денежно-кредитной политики в странах Центральной и Восточной Европы и методы их решения // Вестник Калининградского юридического института. 2005. 2(8)

  7. Cryptocurrency Market Capitalizations // CoinMarketCap.com (http://personeltest.ru/aways/coinmarketcap.com/currencies/bitcoin Дата обращения: 24.11.2020).


Оригинал статьи находится только в бумажном виде журналеЭКОНОМИКА И ПРЕДПРИНИМАТЕЛЬСТВОISSN:1999-2300 Выпуск 12 (125) стр. 1024-1027. Ссылка на автора и источник при копировании обязательна.

Ссылка на информацию о статье в Российском индексе научного цитирования

Подробнее..

5 способов заработать на криптовалюте в эпоху коронавируса

22.05.2021 00:20:21 | Автор: admin

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

Большинство сфер по прежнему находятся в упадке. Большинство населения вынуждено сидеть дома из-за жестких карантинных мер. И несмотря на социальную помощь, многие терпят убытки, а то и вовсе находятся на грани банкротства.

Что же делать, если вы вынуждены сидеть дома, ваши деньги подходят к концу, а карантинные меры еще не окончены? Есть выход! Представляем вам 6 способов заработка на криптовалюте не выходя из дому!

Способ 1 - HODL!

Уже более десяти лет прошло с тех пор, как Сатоши Накамото придумал Bitcoin, который и остается по сегодняшний день первой и самой популярной криптовалютой. Относительно недавно - весной 2021 года стоимость одного биткоина превышала 63000$ долларов США, и несмотря на текущий откат к отметке 38000$, многие эксперты прогнозируют в долгосрочной перспективе рост стоимости BTC.

Мы не призываем вас верить экспертам на слово, а попросим заглянуть в прошлое - в мае 2015 года средняя цена за 1 BTC составляла 240 долларов. Более чем 200 кратный рост цены за 7 лет! Подобная история стала основой одной из самых популярный стратегий заработка на основании криптовалюты - HODL. Название, произошедшее от перефразированного английского глагола держи, означает, что купив биткоин, не продавай его, ведь его ценность будет неуклонно расти.

Подобная стратегия возможно станет оправданной и для эфира - второй после биткоина валюты по стоимости, выросшей в цене за 1 год в со 130$ по 4000$.

Однако стоимость этих криптовалют уже весьма велика и никто не может гарантировать, что после приобретения вами вожделенного актива он не начнет терять в цене.

Хорошо было бы отправится в 2011 и купить биткоин.

Способ 2 - ищем перспективный актив!

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

ADA - криптовалюта блокчейна Cardano, запущенного в 2017 году в мае 2020 года стоила около 5 центов, тогда как ее стоимость на текущий момент превышает 2 доллара!

DOT - криптовалюта блокчейна Polkadot, стартовав в октябре 2020 года со стоимости в 4 доллара в настоящий момент стоит около 40!

SOL - криптовалюта блокчейна Solana - еще в июне ее цена была около 60 центов, а сейчас превышает 55 долларов.

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

И если вы не хотите рисковать.

Майнинг - золотая лихорадка 21 века!

Кроме получения дохода от приобретения актива, растущего в цене для криптоэнтузиаса доступна и иная возможность получения криптовалюты - майнинг. Майнинг, это процесс обеспечения формирования новых блоков, содержащий данные о транзакциях в таких блокчейнах как Биткоин, Эфир, Монеро. Майнер, первым получивший результат очень сложного вычисления, удовлетворяющий необходимым условиям, формирует блок транзакций за отрезок времени и за это получает вознаграждение в виде криптовалюты. Такой принцип формирования блокчейнов, называется PoW (proof of work) - доказательство работы.

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

За первые блоки биткоина счастливчики получали 50 BTC. С тех пор каждые 10 минут появляется новый блок, а награда за майнинг 3 раза уменьшилась вполовину, и на сегодняшний день составляет 6,25 BTC.

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

Но что делать, если компьютер у вас не такой мощный, а электричество стоит дорого?

Стейкинг - криптовалютный аналог вклада!

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

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

И так как от суммы криптовалюты валидатора напрямую зависит его участие в процессе, существует целый набор сервисов, позволяющих принимать средства, обычных пользователей для участия в валидации. Зачастую это решения компаний, имеющих свои валидирующие ноды и принимающие вклады пользователей, однако в некоторых случаях участие простых пользователей позволяет и сам блокчейн. Например в блокчейне Free TON, молодом технологичном проекте, существует технология DePool - позволяющая любому пользователю участвовать в стейкинге, без риска зависимости от решения определенной компании.

Как правило процент дохода от стейкинга далек от космических высот и составляет от 5% до 20% годовых, за редким исключением. Однако с другой стороны и риски потерять свои вложения минимальны.

А есть ли другие способы?

Конкурсы - от каждого по способности, каждому по труду!

Все вышеописанные способы для получения дохода требуют определенных финансовых вложений.

Но есть ли способ. позволяющий заработать на криптовалюте своим собственным трудом? Как ни странно есть.

Многие блокчейны развивают свое сообщество через систему управления Governance. Участникам предлагается выполнить полезную работу для развития технологии, при этом лучшие решения могут быть награждены криптовалютой этого блокчейна. Такие решения можно встретить в Polkadot, Solana, Near...

Мы уже упоминали Free TON - инновационную блокчейн платформу, выросшую из проекта блокчейна для Telegram. Унаследовав технологии TON, Free TON шагнул еще дальше провозгласив полное самоуправление и меритократическую систему распределения криптовалюты.

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

Каждый член сообщества может предложить свой конкурс, разместив его на форуме. После одобрения сообществом конкурс размещается на площадке gov.freeton.org. Принять участие может каждый, имеющий счет в криптовалюте Free TON.

За год сообществом Free TON проведено более 160 конкурсов самого разного уровня и специализации. От сложнейших конкурсов по разработке систем смарт контрактов для децентрализованного голосования, до конкурса рождественских открыток или стикеров, собиравших сотни участников. Конкурсы разработки, дизайна, тестирования и писательских эссе - в сообществе проходят конкурсы на любой вкус. Вознаграждения способны удивить даже бывалого трейдера: за победу в конкурсах разработчиков награды составляли 300 000 TON Crystal - криптовалюты Free TON, цена на которую сейчас составляет около 60 центов. И хотя за дизайнерские и писательские конкурсы скромнее, а их награды составляют 5000 - 15000 TON Crystal, это все равно очень высоко.

Заключение

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

Подробнее..

Перевод Блокчейн потрясающее решение, но для чего?

26.08.2020 12:14:14 | Автор: admin
Прим. перев.: эта вызывающая статья про блокчейн была написана и опубликована около двух лет назад на нидерландском языке. На днях её перевели на английский, что вызвало новый всплеск интереса со стороны ещё большего ИТ-сообщества. Несмотря на то, что некоторые цифры за это время устарели, суть, которую постарался донести автор, осталась прежней.

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


Sjoerd Knibbeler создал это изображение специально для The Correspondent; остальные изображения в этой статье входят в серию 'Current Studies' (2013-2016), подробнее о которой можно узнать в конце статьи.

Представьте: толпа программистов в огромном зале. Они сидят на складных стульях, перед ними ноутбуки на раскладных столиках. На подсвеченной сине-фиолетовым светом сцене появляется человек.

Семьсот блокчейнеров! кричит он своим слушателям. Показывает на людей в комнате: Машинное обучение и затем во весь голос: Энергетический поворот! Здравоохранение! Общественная безопасность и охрана правопорядка! Будущее пенсионной системы!

Поздравляю, мы на хакатоне Blockchaingers Hackathon 2018 в Гронингене, Нидерланды (к счастью, сохранилось видео). Если верить выступающим, здесь творится история. Чуть ранее голос из сопровождающего видеоролика обращается к аудитории с вопросом: могут ли они представить, что прямо здесь, прямо сейчас, в этом зале, они найдут решение, которое изменит миллиарды жизней? И на этих словах Земля на экране взрывается пучком световых лучей.

Затем появляется министр внутренних дел Нидерландов Raymond Knops, одетый по последней моде техногиков в черную толстовку. Он здесь в роли супер-акселератора (что бы это ни значило). Все чувствуют, что блокчейн кардинально изменит управление, говорит Knops.

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

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

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

Агенты изменений в провинциальном нидерландском городке


Жители Зёйдхорна, городка с населением чуть менее 8000 человек на северо-востоке Нидерландов, не имели никакого представления о том, что такое блокчейн.

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

Жители Зёйдхорна решили действовать. Было решено перевести на блокчейн муниципальную программу помощи детям из малообеспеченных семей. Для этого муниципалитет привлек на стажировку студента и блокчейн-энтузиаста Maarten Veldhuijs.

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

Сказано сделано.

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

Внезапно крошечный городок стал одним из центров мировой блокчейн-революции. Последовало внимание СМИ и даже награды: город выиграл премию за новаторство в области муниципальной работы и был номинирован на премию за лучший IT-проект и лучшую гражданскую службу.

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

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


Ну хорошо, агенты изменений, революция, все меняется Но что же такое блокчейн?

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

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

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

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

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

Как только ответ найден, майнер добавляет транзакции в последнюю версию блокчейна ту, которая хранится у него локально. И в чат идет сообщение: Я решил задачу, смотрите!. Любой может проверить и убедиться, что решение верное. После этого все обновляют свои локальные версии блокчейна. Вуаля! Транзакция завершена. В качестве вознаграждения за работу майнер получает биткоины.

Что это за задача?


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

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

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

И биткоин работает. Криптовалютная экосистема растет и развивается: согласно последним подсчетам, число цифровых валют перевалило за 1855 (по данным на февраль 2020 года, их уже более 5000 прим. перев.).

Но в то же время нельзя сказать, что биткоину сопутствует ошеломительный успех. Лишь малый процент магазинов принимают цифровую валюту, и на это имеются веские причины. Прежде всего, сами платежи очень медленно проходят (иногда платеж занимает 9 минут, но бывали случаи, когда транзакция длилась 9 дней!). Механизм платежей весьма накладен (попробуйте сами вскрыть жесткий блистер ножницами гораздо проще). И, наконец, цена самого биткоина чрезвычайно нестабильна (вырастала до 17000, падала до 3000, потом снова подскакивала до 10000).

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

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

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

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

Блокчейн обобщает идею биткоина: давайте избавимся не только от банков, но и от земельных реестров, аппаратов для голосования, страховых компаний, Facebook, Uber, Amazon, Lung Foundation, порноиндустрии, правительства и бизнеса в целом. Благодаря блокчейну все они станут лишними. Власть пользователям!

[В 2018 году] WIRED составил список из 187 направлений, которые блокчейн мог бы улучшить.

Отрасль на 600 млн евро


Между тем Bloomberg оценивает общемировой размер отрасли примерно в 700 млн USD или 600 млн евро (это было в 2018 году; по данным Statista, рынок тогда составлял 1,2 млрд USD и достиг 3 млрд в 2020-м прим. перев.). В крупных компаниях вроде IBM, Microsoft и Accenture целые подразделения выделены под эту технологию. В Нидерландах имеются всевозможные субсидии для блокчейн-инноваций.

Единственная проблема в том, что между обещаниями и реальностью лежит огромная пропасть. Пока складывается ощущение, что блокчейн лучше всего выглядит на слайдах PowerPoint. Исследование Bloomberg показало, что большинство блокчейн-проектов не выходят за рамки пресс-релиза. Правительство Гондураса собиралось перевести земельный кадастр на блокчейн. Этот план был отложен в долгий ящик. Биржа Nasdaq также собиралась построить решение на основе блокчейна. Пока ничего. А как насчет Центрального банка Нидерландов? И снова мимо! По данным консалтинговой фирмы Deloitte, из 86000+ запущенных блокчейн-проектов 92% были заброшены к концу 2017 года.

Почему многие проекты проваливаются? Просветленный и потому бывший блокчейн-разработчик Mark van Cuijk говорит: Можно и вилочный погрузчик использовать, чтобы поднять упаковку пива на кухонный стол. Просто это не очень эффективно.

Я перечислю несколько проблем. Прежде всего, эта технология противоречит законодательству ЕС о защите частных данных, в частности, праву на цифровое забвение. Как только информация попадает в блокчейн, ее невозможно удалить. Например, в блокчейне биткоина встречаются ссылки на детскую порнографию. И их невозможно оттуда удалить*.

* Майнер при желании может добавить любой текст в блокчейн биткоина. Увы, это могут быть и ссылки на детскую порнографию и голые фотографии бывших. Подробнее: A Quantitative Analysis of the Impact of Arbitrary Blockchain Content on Bitcoin by Matzutt et al (2018).

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

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

Тот факт, что никто ни за что не отвечает, и вся информация в блокчейне неизменна, также означает, что любые ошибки остаются там навсегда. Банк может отменить перевод денег. В случае биткоина и других криптовалют это невозможно. Так что все, что было украдено, останется украденным. Огромное число хакеров постоянно атакуют криптовалютные биржи и пользователей, а мошенники запускают инвестиционные инструменты, которые по факту оказываются финансовыми пирамидами. По некоторым оценкам, почти 15% всех биткоинов были украдены в какой-то момент. А ведь ему еще и 10 лет не исполнилось!

Bitcoin и Ethereum используют такое же количество энергии, как и вся Австрия


Плюс ко всему встает вопрос экологии. Вопрос экологии? Разве мы не о цифровых монетах говорим? удивитесь вы. Именно о них, что и делает ситуацию совсем странной. Решение всех этих сложных математических задач требует огромного количества электроэнергии. Настолько большого, что два крупнейших блокчейна мира, Bitcoin и Ethereum, в настоящее время потребляют столько же электроэнергии, сколько и вся Австрия. Платеж через систему Visa требует около 0,002 КВт*ч; тот же платеж биткоинами потребляет до 906 КВт*ч электроэнергии в полмиллиона с лишним раз больше. Такое количество электричества потребляет семья из двух человек примерно за три месяца.

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

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

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

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

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

Или, как пишет Matt Levine, обозреватель Bloomberg: Моя неизменяемая, криптографически защищенная запись в блокчейне о том, что у меня 10 тыс. фунтов алюминия на складе, не особо поможет банку, если я потом тайком вывезу весь этот алюминий через черный ход.

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

Следы блокчейна под капотом


Так что насчет того города-инноватора Зёйдхорна? Разве эксперимент с блокчейном не завершился там успешно?

Ну, не совсем. Я изучил код приложения для помощи детям из малообеспеченных семей на GitHub'е, и там мало что походило на блокчейн или нечто подобное. Во всяком случае, в нем был реализован один единственный майнер для внутренних исследований, работающий на сервере, не подключенном к интернету. Конечное же приложение представляло собой очень простую программу, с простым кодом, работающим на обычных базах данных.

Я позвонил Maarten Velthuijs:

Эй, я заметил, что твоему приложению блокчейн вообще не нужен.
Да, это так.

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

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


Так где же блокчейн?


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

Возьмем, к примеру, My Care Log (Mijn Zorg Log в оригинале) еще один отмеченный различными наградами экспериментальный проект (но на этот раз в области материнства). Все нидерландцы с новорожденными малышами имеют право на определенный объем послеродового ухода. Как и в случае с детскими пособиями в Зёйдхорне, эта программа была бюрократическим кошмаром. Теперь же можно поставить на смартфон приложение, в котором будет собрана статистика о том, какой объем услуг вы получили и сколько их осталось.

Окончательный отчет показывает, что My Care Log не использует ни одной из функций, которые делают блокчейн уникальным. Некоторая группа лиц была заранее выбрана майнерами. В качестве таковых они могут наложить вето на любые зарегистрированные данные об услугах*. В отчете отмечается, что так лучше для окружающей среды и для соответствия правилам защиты персональных данных в Сети. Но разве главный смысл блокчейна не в том, чтобы обходиться без доверенных третьих лиц? Так что же на самом деле происходит?

* Это также справедливо в случае всех поставщиков блокчейн-услуг нового поколения, таких как IBM. Они тоже выдают права на редактирование и чтение определенным людям или компаниям.

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

Деревья Меркла (способ отсоединить данные от их проверок) единственный элемент блокчейна, который попал в конечный продукт. Да, это классная технология, ничего плохого в ней нет. Единственная проблема в том, что деревья Меркла существуют как минимум с 1979 года и используются в течение многих лет (например, в системе контроля версий Git, которой пользуются чуть ли не все разработчики ПО в мире). То есть они не уникальны для блокчейна.

Существует спрос на магию, и этот спрос велик


Как я уже говорил, вся эта история повествует о странном путешествии в никуда.

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

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

Tim имеет в виду, что информационно-коммуникационные технологии, как и весь остальной мир, это один большой бардак.

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

* Согласно недавнему опросу, проведенному консалтинговой компанией Deloitte, 70 % директоров компаний заявили, что обладают богатым опытом в области блокчейна. По их словам, скорость это главное преимущество блокчейна. Возникает вопрос об их умственных способностях, поскольку даже фанатичные поклонники блокчейна считают скорость его работы проблемой.

Вот он, рынок магии. И этот рынок велик. Будь то блокчейн, big data, облачные вычисления, искусственный интеллект или другие модные словечки.

Впрочем, иногда подобное магическое мышление может быть необходимо. Возьмем, к примеру, эксперимент с послеродовым уходом. Да, он завершился безрезультатно. Но Hugo de Kaat из страховой компании VGZ, принимавшей участие в исследовании, говорит, что благодаря нашему эксперименту Facet, крупнейший поставщик ПО в области послеродового ухода, мобилизовал свои усилия. Они собираются сделать похожее приложение, но без всяких наворотов просто традиционные технологии.

А как насчет Maarten Velthuijs? Смог бы он сделать свое замечательное приложение для помощи детям без блокчейна? Нет, признается он. Но он совсем не догматичен в отношении технологии. У нас тоже не всегда все получалось, пока человечество училось летать, говорит Velthuijs. Поищи на YouTube там есть ролик, в котором мужик прыгает с Эйфелевой башни с самодельным парашютом! Да, он, конечно, разбился. Но такие люди нам тоже нужны.

Так что: если Maarten'у понадобился блокчейн, чтобы заставить приложение работать, отлично! Если бы идея с блокчейном не выгорела тоже хорошо. По крайней мере, он узнал бы кое-что новое о том, что работает, а что нет. Плюс ко всему, теперь у города есть хорошее приложение, которым можно гордиться.

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

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

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

Как пишет Matt Levine, главный плюс блокчейна в том, что он заставил мир обратить внимание на обновление технологий бэк-офиса и поверить в то, что эти изменения могут быть революционными.

Об изображениях. Sjoerd Knibbeler в своей студии любит экспериментировать с различными летучими вещами. Все фотографии для этой статьи (из серии Current Studies) он сделал с помощью вентиляторов, воздуходуек и пылесосов. В результате получились фотографии, которые делают видимым невидимое: ветер. Его загадочные картины находятся на границе реального и нереального, превращая обычный пластиковый пакет или плоскость с дымом в нечто магическое.

P.S. от переводчика


Читайте также в нашем блоге:

Подробнее..

Деньги это всегда технология

21.02.2021 16:09:36 | Автор: admin

Чувствую, что должен написать статью про будущее Биткоина и криптовалют, не часто бывает время, когда людям это интересно. И сразу сообщу главное. Нет вообще никаких причин, почему капитализация Биткоина должна быть меньше капитализации золота. Дальше без картинок философское объяснение этой точки зрения.

Нет вообще никаких причин, почему капитализация Биткоина должна быть меньше капитализации золота. Более того, именно физические свойства золота, а конкретнее, его физические ограничения, дали жизнь такому (новому в масштабе истории денег) явлению как фиатные валюты. Задайте себе вопрос - смогли бы существовать фиатные валюты, если бы золото обладало свойством нематериальной передачи и передачи на любое расстояние? Нет конечно, не смогли бы. Потому что фиатные валюты это и есть изначально долговые расписки под золото - более удобная, "бумажная" форма золота. И только потом деньги получили развитие в виде золотовалютных и иных деривативов, коими сейчас и являются. Если бы золото не было таким плохим и неудобным, то никаких валют не возникло бы вовсе. А сегодня даже бумажные расписки не столь удобны, как записи в системе VISA. Позавчера золото было неудобно переправлять через океан. Вчера было бумагу не удобно переправлять через океан. Сегодня даже записи в базах данных не удобно переправлять через океан, если эта база данных не блокчейн. Вся нынешняя финансовая система с множеством суверенных денег всех сортов мало того что новодел (сколько лет она существует?), так еще и новодел с трехэтажными подпорками и подпорками подпорок. Не верите что финансовая система спроектирована дефективно? По моему, уже никто в этом не сомневается. Посмотрите что происходит. Уже даже акции начинают обладать свойствами денег. Уже сырье начинает частично обладать свойствами денег. Даже не говорю про недвижимость, которая почти сразу стала выполнять роль больших денег. Все это не нормально. При золоте такого не было. При золоте все было понятно - золото обладало свойствами максимальной ликвидности и вдоль и поперек. Не абсолютной ликвидностью, но возле того. А сейчас золото обладает ликвидностью только "в каком то смысле", весьма условном.

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

И вот к чему я подвожу. Проблема существует. Она существовала до золота и её решали. Она существовала во время золота, её решали. Она существовала во время фиатных бумажных денег, её решали. Ровно та же проблема существует сегодня, во время фиатных электронных денег со всеми службами в виде VISA, Master, SWIFT, UnionPay, WesterUnion, Revolut - все это подпорки того или иного сорта ликвидности. И вот скажите мне после этого, после всей этой истории от ракушек до PayPass, что блокчейн не является финальным решением. Любой человек, который способен мыслить деньги с инженерной точки зрения, которого денежные знаки не заставляют присягнуть богу Меркурию, понимает, что самыми дорогими деньгами будет те, которые лучше всего решают понятную технологическую проблему ликвидности и решают ее на любом масштабе - от билета в метро до космической миссии.

И вот скажите мне, почему блокчейн, или DAG Биткоина, внутри которого будет существовать рынок скорости и вероятности транзакции (которого сегодня нет), не является финальным решением?

Подробнее..

Atomic Swaps блокчейн расправил плечи

04.05.2021 10:05:07 | Автор: admin

Зачем идти в обход, когда можно срезать?

Вы, наверное, слышали о Суэцком канале(кажется недавно об этом писали в новостях). До создания искусственного водного пути европейские корабли, доставляющие ткани и специи из Индии, должны были пройти печально известный Кейп-Роут - 40-дневное путешествие, покрывающее более 10 000 морских миль. Открытие канала сократило расстояние более 5000 миль и сократило расстояние до 1012 дней и открыло новую эру морского судоходства. Меньше времени в море, меньше смертей от цинги, меньше пиратов, недоедания и разрушительных штормов. Прогресс.

И вот за окном 2021 год. Мировая капитализация крипто-рынка приближается к 2 триллионам долларов. PayPal запускает платежи в криптовалюте. Линдси Лохан шилит Трон. Рекламы Dogecoin на Super Bowl не случилось, но Илон вместо этого, в буквальном смысле, отправил его ту зе мун. Свершилось. Крипта - это мейнстрим. Но даже сегодня получение определенных криптоактивов может стать своего рода эпическим путешествием.

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

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

Что такое Atomic Swaps?

Существует некоторая неопределенность в отношении термина Atomic Swap, поэтому для этой статьи мы сразу определим его как операцию, в которой задействованы две криптовалюты, каждая из которых имеет свой нативный блокчейн и техническую возможность создавать безопасные операции обмена между пользователями сети, не прибегая к услугам trusted third party и не доверяя друг другу. Например если Zano и Bitcoin имеют поддержку atomic swaps, то пользователи могут безопасно совершать обмен Zano на BTC. Операция называется atomic, потому что подразумевает что вся процедура не может остановиться на полпути, переведя только часть монет, она или происходит полностью и обе стороны получают ожидаемые монеты или же она не происходит совсем и обе стороны остаются при своих монетах. Таких образом ни одна из сторон не может смошенничать ни на каком из этапов сделки.

HTLC

В основе механизма atomic swap лежит так называемый HTLC(Hash-Time Locked Contract). Этот контракт можно условно перевести на человеческий язык таким образом:

Если прошло времени меньше чем Т, то перевести N монет на адрес A при условии предоставления секрета, хеш которого равен H.

Если прошло времени больше чем Т, и за это время секрет не предоставлен, то перевести (вернуть) деньги на адрес B.

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

Тот, кто создает этот контракт, придумывает секрет, но не раскрывает его, а в самом контракте указывают только адреса A, B, хеш H секрета, и период времени, в течение которого контракт может быть открыт с помощью секрета. То есть, если Боб (у которого адрес B) отправляет Алисе (у которой адрес A) такой контракт, то она не сможет открыть этот контракт и перевести себе деньги до тех пор, пока Боб не сообщит ей этот секрет.

Cross-chain Atomic Swap

Теперь, после знакомства с HTLC, опишем процесс осуществления cross-chain atomic swap между сторонами. Представим Алису и Боба. Допустим, у Алисы есть Zano(будем использовать этот проект для примера), а у Боба - BTC, и, разумеется, они хотят трейдить. Алиса и Боб договорились, что хотят поменять оговоренную сумму BTC на оговоренную сумму ZANO. У обоих участников сделки есть кошельки как в сети Bitcoin, так и в сети Zano, и оба договорились о том, что сделка должна быть завершена в течении суток.

Итак, все начинается с того, что Алиса придумывает секрет. Этот секрет будет краеугольным камнем всего процесса, поэтому важно понимать, что секрет есть только у Алисы, она его никому не раскрывает, но считает от него хеш и создает в сети Zano HTLC-транзакцию, адресованную Бобу и залоченную с помощью этого хеша. Боб не сможет воспользоваться выходом этой HTLC-транзакции пока не узнает секрет Алисы. Кроме того, в HTLC-транзакции задано условие, что она действительна только в течении суток, после чего с этой транзакции деньги можно будет вернуть только назад Алисе (и уже без предоставления секрета).

Увидев, что Алиса создала в сети Zano HTLC-транзакцию для Боба, и убедившись, что количество монет в этом контракте соответствует их с Алисой договоренности, Боб создает HTLC-транзакцию в сети Bitcoin, адресованную Алисе и содержащую оговоренное число монет BTC, и, что очень важно, залоченную именно тем же хешем, который Боб увидел в HTLC-транзакции, созданной Алисой.То есть, это хеш секрета Алисы.

Алиса убеждается в том, что количество монет в HTLC-транзакции, созданной Бобом на ее адрес в сети Bitcoin, соответствует их договоренностям, и принимает решение об исполнении сделки. Это решение по сути является тем самым атомарным моментом сделки, до него сделку можно отменить и все останутся при своих монетах (получив refund через определенное количество времени, указанное в HTLC, в нашем случае это 24 часа).

В отличие от Боба, Алиса знает секрет, хешем от которого залочен HTLC-выход транзакции в сети Bitcoin, поэтому она может создать redeem-транзакцию и вывести деньги в свой кошелек. Такая операция и будет той самой атомарной точкой невозврата, после этого сделка будет в техническом смысле необратима.

Алиса делает redeem-транзакцию.

Как только Алиса создала такую транзакцию и отправила ее в сеть Bitcoin, она раскрыла свой секрет поскольку этот секрет явно включается во вход redeem-транзакции для того, чтобы доказать, что она его знает. Этот же секрет является также локером транзакции, адресованной Бобу в сети Zano, поэтому Боб, внимательно следя за ситуацией, видит отправленную Алисой redeem-транзакцию, извлекает из нее секрет Алисы и создает соответствующую redeem-транзакцию в сети Zano:

По завершении последнего этапа Алиса и Боб получают то, о чем они договорились, при этом ни на одном из этапов ни одна сторона не сможет смошенничать. Если же любая из сторон передумала до того, как Алиса создала redeem-транзакцию и раскрыла свой секрет (в случае с Бобом до момента создания им HTLC в сети Bitcoin), то они просто ждут пока пройдет временное и предварительно оговоренное ими окно сделки. Важно иметь в виду, что timelock стороны, которая создает ответный HTLC, те стороны которая на знает секрета, должен быть выбран таким образом, чтобы он закончился раньше, чем timelock стороны, инициирующей операцию HTLC первой. Если это условие не будет соблюдено, то вторая сторона (в нашем случае это Боб) может не успеть создать свою redeem транзакцию, и останется без монет.

Генетическая совместимость проектов

В описанном выше примере оба проекта имеют совершенно разную кодовую базу, и даже разные эллиптические кривые(!). К счастью, HTLC позволяют организовывать atomic swaps даже между такими генетически несовместимыми проектами.

Единственное, что у них должно быть общего, так это поддержка HTLC с одинаковой хеш-функцией. В подавляющем большинстве проектов для этой цели используется классека SHA-256.

Privacy considerations

В случае Bitcoin едва ли можно говорить о прайваси, но нужно прояснить особенности взаимодействия с прайвеси-блокчейном, в котором транзакции по умолчанию являются приватными. Очевидно redeem-транзакции не могут иметь anonymity set - использование mixins не имело бы никакого смысла в любом случае, поскольку всегда можно сопоставить к какому именно HTLC-выходу относится вход через проверки на соответствие хеша секрета. Поэтому связь между транзакцией с HTLC-выходом и redeem-транзакцией довольно однозначна. Кроме того, сопоставить пару транзакций HTLC-to-Redeem в сети Bitcoin для отдельно взятой операции atomic swap, связанной с соответствующей парой транзакцией в сети Zano, довольно легко, Это можно сделать, используя все тот же хеш секрета - в обоих сетях, очевидно, хеш должен быть одинаковым, поскольку для проведения операции в обоих блокчейнах использовался один и тот же секрет.

Практический пример

Для того, чтобы лучше проиллюстрировать работу atomics swaps для двух принципиально разных блокчейн проектов, мы реализовали небольшой пример под nodejs. За основу мы взяли статью и репозиторий, в которых был интересно представлен пример atomic swaps между Bitcoin и BitcoinСash. Мы существенно упростили код, чтобы продемонстрировать основные принципы, тем не менее, если у вас появится желание разобраться с работой HTLC в Bitcoin на более низком уровне, вплоть до оп-кодов, то мы рекомендуем ознакомиться с их статьей.

P2SH

В практическом примере, о котором идет речь, важно понимать концепцию P2SH, используемую на стороне Bitcoin для создания HTLC. В Bitcoin для определения конкретного способа использования выхода транзакции используется так называемый script(далее скрипт), элементарный стековый язык программирования. Причем скрипт, который определяется для конкретного выхода, на самом деле будет являться окончанием скрипта, ну а его начало должен будет предоставить тот, кто тратит этот выход (подробнее с этим можно ознакомиться в этой статье). Однако, кроме непосредственного включения половинки скрипта в выход, есть еще способ отправки на хеш скрипта (P2SH). Это значит, что содержание самого скрипта выхода не раскрывается до момента фактической траты выхода, а в транзакции содержится только указание, что при трате этого выхода должно быть предоставлено окончание скрипта, хеш от которого прописан в выходе, и начало скрипта, которое этот скрипт отпирает. В описываемом примере сети Bitcoin для создания HTLC используется именно такой тип выхода. Поскольку обе стороны договорились об условиях сделки и они знают свои public keys (именно public keys, а не адреса, потому что в отличие от Zano, например, в bitcoin адресом является хеш public key), то обе стороны смогут генерировать одинаковый HTLC скрипт выхода, получив один и тот же script-хеш-адрес(P2SH). Для одной стороны это будет script-хеш-адрес(P2SH), на который она отправит BTC, а для другой стороны это будет script-хеш-адрес(P2SH), который она будет мониторить для того, чтобы детектировать факт создания HTLC и его подтверждения сетью.

Заключение

Хотя в приведенных выше примерах мы использовали Bitcoin и Zano, atomic swaps могут выполняться между любыми цифровыми валютами, которые поддерживают HTLC. Это обеспечивает более безопасный и прямой маршрут между экосистемами Bitcoin, Bitcoin Cash, Decred, Litecoin, Qtum, Monacoin, Zano и тп. И список совместимых проектов постоянно растет.

На данный момент это инструменты низкого уровня, но они закладывают основу для гораздо большей совместимости в будущем. Мы уже предвидим создание платформ с более доступным и удобным интерфейсом, построенных на основе Atomic swaps (например, AtomicDex). Вскоре они станут настоящими децентрализованными альтернативами централизованным биржам. По мере того, как инструменты продолжают развиваться и совершенствоваться, мы можем визуализировать будущее, в котором вы сможете совершать быстрые, недорогие и надежные сделки без рисков, связанных с доверием третьей стороне.

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

Atomic swaps. Ликвидность. Прогресс.

PS: Материал составлен в соавторстве с участником нашего комьюнити проекта Zano - OrsonJ, за что ему огромное спасибо!

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru