- PVSM.RU - https://www.pvsm.ru -
Блокчейн-платформа Эмер существует уже три года, и на её основе работает ряд распределённых сервисов. Наибольший интерес она вызывает в среде бизнес-применений (b2b), а также IT-профессионалов, в основном – связистов и безопасников.
Она изначально проектировалась как стабильная платформа для промышленных применений, то есть исходя из соображений «здравого консерватизма». В ядро системы были введены механизмы, стабилизирующие работу сети и повышающие её эффективность [1]. Также по соображениям безопасности был введён запрет на исполнение произвольного программного кода, загружаемого из вне, а оставлен классический скрипт Сатоши [2], неполный по Тьюрингу. Тем не менее, текущий ограниченный функционал без снижения безопасности позволяет создавать и эксплуатировать блокчейн-сервисы, примеры которых приведены ниже.
Основная идея платформы Emer: Много сервисов на одном блокчейне. Иными словами – установите единственный блокчейн, и получите пакет сервисов, а также возможность легко добавлять свои сервисы. Ряд компаний, таких как Deloitte [3] и I-teco [4] оценили возможности платформы, и уже используют её для решения своих задач. Данная статья расскажет Вам, как получить доступ к блокчейну Emer и использовать как существующие сервисы, так и внедрять свои.
Структура сети Emer подобна таковой у подавляющего большинства других криптовалют, таких как Bitcoin, Litecoin, и им подобных, и представляет собою одноранговую пиринговую сеть, состоящую из узлов (нод). Узлы Emer связываются между собою по протоколу TCP/IP, порт 6661. В процессе работы узлы обмениваются информацией о других доступных узлах, и таким образом, в сети появляются новые p2p соединения. Граф соединений обладает высокой избыточностью, то есть существует много возможных путей передачи сообщений между произвольными узлами, и новые транзакции и блоки распространяются по сети, как слухи в большом городе. И если какой-то путь почему-то становится недоступным, то скорее всего, данные найдут дорогу обходным путём. Эта избыточность делает сеть надёжной, хотя она состоит из ненадёжных элементов, так как узлы далеко не всегда имеют 100% доступность.
Для получения доступа к сети Emer, Вам надо установить у себя программу-кошелёк (ноду), и просто её запустить. Для этого Вам надо либо скачать и инсталлировать бинарную программу [5], либо собрать самому из исходных кодов, доступных на github [6].
Программа поставляется в двух вариантах:
После скачивания и инсталляции, программу можно сразу же запускать. Запущенная программа (нода) сама соединится с другими активными нодами (пирами), и синхронизирует блокчейн, а при первом старте – скачает его у пиров. После начальной синхронизации, которая занимает несколько часов, нода активна и готова к работе. При первом старте, программа создаёт файл кошелька wallet.dat, который располагает в том же каталоге, где находится блокчейн и другие файлы (каталог данных программы). В зависимости от используемой ОС, эти файлы находятся в:
Файл wallet.dat содержит приватные ключи Вашего кошелька, то есть – Ваш баланс. В случае потери этого файла Вы потеряете и свои деньги тоже. Поэтому мы настоятельно рекомендуем регулярно делать резервную копию этого файла, особенно – после создания новых имён и отправки денег, то есть после действий, создающих новые приватные ключи и адреса.
При инсталляции на Linux демона emercoind из пакетов, для этого демона создаётся специальный псевдо-пользователь “emc:emc”, домашний директорий которого находится в /var/lib/emc, а сама программа инсталлируется в /usr/bin/. Туда же инсталлируется и программа emercoin-cli, которая является интерфейсом командной строки к демону. Программа имеет права доступа такие, что её может запустить любой пользователь системы, входящий в группу “emc”. Управляя списком этой группы, можно управлять доступом непривилегированных пользователей к ноде Emer.
Запущенная программа может управляться как через GUI (если это emercoin-qt), так и через HTTP JSON API (оба варианта: emercoind, emercoin-qt).
В QT-версии можно открыть консоль отладки в пункте Help/Debug Window/Console, и вводить консольные команды. Например команда “getinfo” возвращает информацию по ноде и балансу кошелька (естественно, в новом кошельке баланс нулевой). Команда “help” выводит список доступных команд. Команда “help getinfo” распечатает детальную информацию по команде getinfo. Аналогично, help работает и для других команд.
Наибольший интерес представляет собою HTTP JSON RPC API, посредством которого можно легко связать ноду Emer с другими системами, и тем самым получить интерфейс к блокчейну.
Параметрами интерфейса заведуют следующие строки конфигурационного файла emercoin.conf, расположенного в каталоге данных программы:
listen=1 # разрешить слушать порт API server=1 # запустить модуль API-сервера rpcallowip=127.0.0.1 # Разрешено принимать запросы только из локальной машины rpcport=6662 # Порт для HTTP JSON RPC API rpcuser=emccoinrpc # username для API rpcpassword=secret_password # Пароль для API
В стандартной linux-поставке демона, файл emercoin.conf с соответствующим начальным содержимым создаётся инсталляционным скриптом. В случае же ручной установки QT-программы для Вашего username, или же в системе Windows, этот файл надо создать вручную, и внести туда соответствующие параметры. В системе Windows будьте внимательны – по дефолту Windows скрывает расширения файлов, и если в таком режиме Вы попробуете создать emercoin.conf, то Windows создаст Вам emercoin.conf.txt, который программа читать не будет. Убедитесь, что у Вас расширения не скрываются, и файл действительно называется emercoin.conf.
Если Вы создавали файл emercoin.conf во время работы программы, перезапустите её.
В случае использования демона, для управления им применяется программа emercoin-cli, которая имеет сокращённый symlink “emc”. Таким образом, в Linux/BSD наберите в командной строке:
$ emc getinfo
И Вы увидите ответ от демона-ноды. Аналогично работают другие команды. Например, введите:
$ emc help
И Вы увидите полный список команд. И команды, и параметры emercoin-cli соответствуют таковым из отладочной консоли QT-версии.
Покамест мы обходились без какого-либо программирования. Да и далее будем обходиться без него в том, что касается самого блокчейна. Но всё-таки при интеграции блокчейна Emer как компонента других систем, некое программирование вне блокчейна всё-таки нужно. К надёжности этих программ не предъявляется сверх-высоких требований, ибо эти программы находятся на стороне прикладного ПО а не в блокчейне, и следовательно – всегда могут быть исправлены или заменены при необходимости.
Доступ производится стандартным запросом HTTP на порт, указанный в конфигурационном файле. В запросе посылается POST JSON, соответственно, в ответе также получаете JSON, содержащий запрашиваемую информацию, или же код ошибки. Схема взаимодействия напоминает запросы и ответы в SQL-сервер.
Интерфейс полностью совместим с интерфейсом JSON RPC API от Bitcoin, и можно использовать всю документацию Bitcoin как руководство. Например, этот документ [7] демонстрирует использование интерфейса из различных языков программирования – правда, с использованием соответствующих интерфейсных библиотек.
Но те библиотеки особо не нужны, и можно запросы подавать напрямую, «как есть». Пример ниже демонстрирует использование программы curl для подачи такого запроса (всё посылать в одну строку):
curl –user emccoinrpc:secret_password --data-binary '{"jsonrpc": "1.0", "id":"test", "method": "getinfo", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:6662/
В этом примере посылается команда getinfo и пустой массив параметров. В командах, требующих параметров, их надо вносить в массив “params”.
Ниже приведена процедура на PHP, которая без всяких библиотек делает прямой запрос в Emer-ноду. Первый параметр – команда, второй – массив аргументов:
$emcCONNECT = “http://emccoinrpc:secret_password@127.0.0.1:6662/”; // Performs request to EMC wallet function Req($cmd, $params) { global $emcCONNECT; // Prepares the request $request = json_encode(array( 'method' => $cmd, 'params' => $params, 'id' => '1' )); // Prepare and performs the HTTP POST $opts = array ('http' => array ( 'method' => 'POST', 'header' => 'Content-type: application/json', 'content' => $request )); $fp = fopen($emcCONNECT, 'rb', false, stream_context_create($opts)); if(!$fp) throw new Exception('emcssl_NVS_req: Unable to connect to EMC-wallet'); $rc = json_decode(stream_get_contents($fp), true); $er = $rc['error']; if(!is_null($er)) throw new Exception('emcssl_NVS_req: Response error: ' . $er); return $rc['result']; } // Req
Пример использования этой процедуры можно найти в подсистеме голосования на блокчейне emcvote [8]. Уточним, что второй аргумент функции, «params» — это не ассоциативный массив JSON, а обычный массив PHP, создаваемый встроенной функцией array(). Если команда не требует параметров, то ей надо передать пустой массив, вызвав например:
$reply = Req(«getinfo», array());
Аналогичный интерфейс для языка “C” с использованием библиотеки curl можно взять из исходников программы emcssh: github.com/emercoin/emcssh [9]
Как было указано выше, Emer по набору команд и их аргументов совместим с Bitcoin, интерфейс которого де-факто является стандартом финтех-технологий, и всё, что работает с Bitcoin, будет без проблем работать с Emer тоже.
Однако Emer имеет сильное отличие от Bitcoin. В блокчейне Emer присутствует NVS – Name-Value Storage. Это универсальное хранилище произвольных данных в блокчейне. Хранение производится в виде пар ключ-значение, где ключ – уникальный в пределах сети поисковый ключ, а значение – произвольный массив байтов. Размер данных – до 20kb, размер поискового ключа до 512 байт.
Доступ к этому хранилищу обеспечивается расширенным набором команд API, которые формируют уровень представления сервиса (№6) в семиуровневой модели OSI [10].
Cоответственно, доступ к NVS есть и в GUI, во вкладке “Manage Names”. Список команд API и примеры использования NVS приведены на wiki-справочнике [11] проекта.
NVS обеспечивает множество сервисов на одном блокчейне. Рекомендация – использовать префик сервиса, который двоеточием отделён от последующего поискового ключа. Пример такого ключа с указанием сервиса (emc DNS): dns:flibusta.lib
Даже имея нулевой баланс на кошельке, Вы можете извлекать записи и их историю. Например, подайте в консоли (или через API) команды:
name_show dns:flibusta.lib name_history dns:flibusta.lib
И Вы увидите текущую запись DNS Флибусты, и историю изменения этой записи.
Для внесения новых записей или модификации существующих в кошельке необходимо иметь баланс в несколько EMC для покупки сервиса – добавления чего-либо в блокчейн.
Уточним, что под модификацией записи подразумевается создание нового значения для того же поискового ключа, старое значение тоже остаётся в блокчейне навсегда и доступно посредством команды name_history. Создание же записей делается командой name_new, а обновление – name_update. Запись становится доступной для других узлов сети после первого подтверждения (закрытия блока), что происходит примерно раз в 10 минут.
Префиксы сервисов – произвольные, таблица в вики даёт только рекомендации, какие префиксы и для чего использовать. Вы можете создать свои сервисы, и назначить им свои префиксы, которые сами же и будете обрабатывать. Но, естественно, текущие обработчики тех или иных сервисов уже настроены на использование соответствующих префиксов. Так что не удивляйтесь, если Вы создадите свой новый префикс сервиса, а текущие сервисы его будут игнорировать.
NVS-записи, внесённые в блокчейн кем-либо, можно увидеть на сайте обозревателя блокчена Emer [12], в разделе NVS. Также на этом сайте можно посмотреть структуру и историю блоков. Это весьма хороший отладочный инструмент для наблюдения, «что же у нас внеслось в блокчейн».
В сети уже находятся в эксплуатации несколько немонетарных сервисов, приведём примеры наиболее популярных:
Также в процессе ввода в эксплуатацию находятся сервисы emcdpo [18] и ENUMER.
Также существует механизм привлечения финансирования проектов через IPO на блокчейне Emer. Успешный пример такого IPO произвело крестьянское хозяйство Колионово, по результатам опыта которого была написана инструкция «Блокчейн для фермеров [19]».
Все эти сервисы используют NVS как распределённое доверенное хранилище критической информации – доменных записей, публичных ключей шифрования, хешей сертификатов и подобных элементов установления доверия между распределёнными агентами. Заметим, что со стороны блокчейн-системы записи в NVS – пассивны, то есть даже если туда поместить программу, то сама блокчейн-система её исполнять не будет. И если кому-то надо её исполнять – он может это делать не в общем блокчейне, а на своей стороне, взяв на себя риски исполнения произвольного Тьюринг-совместимого кода.
Для получения дополнительной информации, посетите вики-справочник проекта:
wiki.emercoin.com/ru [20]
Или обратитесь к разработчикам:
emercoin.com/contact [21]
Автор: Emercoin
Источник [22]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ssh/256424
Ссылки в тексте:
[1] механизмы, стабилизирующие работу сети и повышающие её эффективность: https://cryptor.net/kriptovalyuty/pod-kapotom-emercoin
[2] скрипт Сатоши: https://en.bitcoin.it/wiki/Script
[3] Deloitte : http://www.econotimes.com/Deloitte-demonstrates-new-solution-for-electronic-document-flow-based-on-Emercoin-blockchain-605619
[4] I-teco: http://www.i-teco.ru/press/news/77792/
[5] бинарную программу: http://emercoin.com/#download
[6] github : https://github.com/Emercoin/
[7] документ: https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)
[8] emcvote: https://github.com/emercoin/emcvote
[9] github.com/emercoin/emcssh: https://github.com/emercoin/emcssh
[10] семиуровневой модели OSI: https://en.wikipedia.org/wiki/OSI_model
[11] приведены на wiki-справочнике: https://wiki.emercoin.com/en/Emercoin_NVS
[12] обозревателя блокчена Emer: https://emercoin.mintr.org
[13] emcdns: https://cryptor.net/kriptovalyuty/pod-kapotom-emercoin-chast-2-decentralizovannaya-necenzuriruemaya-sistema-domennyh
[14] emcssh: https://cryptor.net/kriptovalyuty/pod-kapotom-emercoin-chast-3-emcssh-infrastruktura-publichnyh-klyuchey-vsemirnogo
[15] emcssl: https://cryptor.net/kriptovalyuty/pod-kapotom-emercoin-chast-4-emcssl-decentralizovannaya-besparolnaya-sistema
[16] emcssl+InfoCard: https://habrahabr.ru/post/257605/
[17] Тест-сайт: https://emcssl.emercoin.com/
[18] emcdpo: https://emercoin.com/emcdpo-ru
[19] Блокчейн для фермеров: https://golos.io/ru--blokcheijn/@emercoin/blokchein-dlya-fermerov-rukovodstvo-po-ispolzovaniyu
[20] wiki.emercoin.com/ru: https://wiki.emercoin.com/ru/
[21] emercoin.com/contact: https://emercoin.com/contact
[22] Источник: https://habrahabr.ru/post/329632/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.