Создание первого приложения для Blockchain с помощью Eris
Декабрь 24, 2018
Несколько месяцев назад я был на премии «Берлинский блокчейн», и кажется, что «блокчейн» — это новое модное слово, которое стартапы и технический персонал любят бросать во все, без полного понимания концепций, стоящих за ним.
Верите ли вы, что блокчейн — это просто новое модное слово для индустрии или действительно революционная технология, разработчики часто не уверены, как они могут использовать концепцию блокчейна в своих приложениях. Решение Eris Industries может сделать это немного проще.
Eris Industries объединяет концепции блокчейна и умного контракта, чтобы сделать их более удобными и применять их в своем проекте. Лучшие проекты для такого рода технологий — это идеи, которые нуждаются в форме децентрализованного доверия и безопасности.
В этой статье я создам демонстрационное приложение, которое представляет собой библиотеку имен привилегированных пользователей для гипотетической ситуации. В последнем разделе руководства приложение позволит вам изменить имя в списке и проверить значения.
Установка и настройка
Установка Eris сбивает с толку, инструкции на их домашней странице не работают для меня, и я вместо этого выполнил шаги в их более подробных инструкциях . Для меня на моем Mac я установил Docker Toolbox (требуется Docker), а затем установил Eris с Homebrew .
После установки настройте Eris с помощью следующей команды, которая создаст файлы конфигурации и загрузит требуемые (большие) образы Docker:
eris init
Примечание . Это не ясно из документации Eris, но лучше всего выполнить остальные команды в этом руководстве в контексте Docker. Это в основном относится к Mac и Windows, более подробную информацию можно найти здесь .
Предоставление доступа
Запустите службу ключей Eris для аутентификации с помощью:
eris services start keys
Эта команда запускает службу на основе определения службы keys~ / .eris / services . Eris создает некоторые по умолчанию для предопределенных типов приложений (например, Tor , ipfs и bigchaindb ), но вы также можете создавать свои собственные .
Теперь создайте несколько ключей, чтобы предоставить конкретным пользователям доступ к сервису и приложению:
eris keys gen
Сохраните ключ для последующего использования, заменив значение ключа только что сгенерированным ключом:
Затем создайте блокчейн с именем ( library_chainsimplechain
eris chains make library_chain --account-types=Root:2,Full:1 simplechain
Если вы покопаетесь в скрытой папке ~ / .eris, вы увидите файлы, сгенерированные этой командой. Внутри ~ / .eris / chain / library_chain находится серия файлов:
genesis.json : рассказывает eris, как создать конкретный блокчейн, обеспечивая состояние «генезиса» блокчейна.
account.csv и validators.csv : вы можете использовать два файла позже, чтобы создать новый genesis.json, если он будет потерян.
address.csv : содержит адреса и «имена» узлов.
Теперь вы готовы создать экземпляр Blockchain:
eris chains new library_chain --dir ~/.eris/chains/library_chain/library_chain_full_000
Убедитесь, что цепочка существует и работает:
eris chains ls
контракты
«Умный контракт» — это популярный термин, связанный с блокчейном, для «соглашения о том, что блокчейн будет анализировать транзакции, которые вы отправляете». В качестве простого примера, связанного с Eris, вы создадите контракт, в котором будет setget Начните с создания папки для приложения и перехода в нее:
cd ~/.eris/apps
mkdir library
cd library
Создайте файл library.sol внутри этой папки и добавьте в него следующее:
А внутри папки приложения ( ~ / .eris / apps / library ) вызовите менеджер пакетов Eris для файлов, которые вы создали, и разверните контракт в блокчейне:
eris pkgs do --chain library_chain --address $addr
Эта команда найдет заданные вами задания, развернет их, а затем вернет сделанное утверждение, которое в данном случае состоит в том, что заголовок книги является строкой.
Оформление заявки
Теперь пришло время написать некоторый код, который взаимодействует с блокчейном и выполняет над ним действия. Это все еще простой пример, который позволяет пользователям устанавливать новое значение для книги в блокчейне, а затем проверять текущее значение.
В примере будет использоваться Node.js, поэтому сначала создайте файл package.json в папке ~ / .eris / apps / library со следующим содержимым:
Этот первый блок кода создает требования, а затем некоторые специфичные для Eris переменные для abi
За исключением нескольких деталей, большая часть остального кода — более знакомая территория JavaScript, создающая сервер Node, прослушивающая запросы и записывающая и считывающая данные в блокчейн в зависимости от ситуации:
var server;
server = http.createServer(function(request, response){var body;var value;switch(request.method){case'GET':console.log("Received request for details.");
contract.get(function(error, result){if(error){
response.statusCode=500;}else{
response.statusCode=200;
response.setHeader('Content-Type','application/json');
response.write("You have requested details on: "+ result);}
response.end('\n');})breakcase'PUT':
body ='';
request.on('data',function(chunk){
body += chunk;});
request.on('end',function(){console.log("Received request to set title to "+ body +'.');
contract.set(body,function(error){
response.statusCode= error ?500:200;
response.end();});});break;default:
response.statusCode=501;
response.end();}});
server.listen(process.env.NODE_PORT,function(){console.log('Listening for HTTP requests on port '+ process.env.NODE_PORT+'.');});
Примечание : вам может понадобиться установить для значения NODE_PORT
Заверните приложение и PUT
curl --request PUT --data Jane http://localhost:1111
# Or whatever your node IP address is
Теперь, если вы GET
curl http://localhost:1111
Посмотрите на вывод команды curl и приложения Node.js, чтобы получить немного более четкое представление о том, что происходит за кулисами.
‘Вывод’
На первый взгляд может показаться, что сложно начать работу с базовым приложением, использующим Eris. Но если вы не столкнулись с какими-либо проблемами, эти шаги по установке не должны занимать слишком много времени, и тогда вы будете готовы начать использовать блокчейн в своих приложениях.
На самом деле кодирование приложения, использующего блокчейн, — это большая и сложная тема, и я едва коснулся ее поверхности. Для следующих шагов я рекомендую вам убедиться, что у вас есть добросовестный вариант использования блокчейна в вашем приложении, а затем прочитать учебные руководства на веб-сайте Eris .
Это будет ухабистое и порой запутанное путешествие, но мне бы очень хотелось услышать ваш опыт, мысли и вопросы.