В рамках Convector Suite мы решили развернуть библиотеки Dev Env и превратить их в самостоятельный проект. Основная причина этого решения заключается в том, что мы знаем, что работа со средой при разработке с использованием Hyperledger Fabric и других фреймворков может оказаться непосильной задачей. Мы всегда видим людей в чатах, на каналах и блогах, которым тяжело справляются с этими задачами. Это достаточно большая проблема, чтобы быть собственным продуктом.

Если вы не знакомы с Convector Suite, ознакомьтесь с этим сообщением: Объявление: Convector, платформа JavaScript для систем смарт-контрактов

Пакет Convector Suite расширился с момента запуска 5 месяцев назад. Изначально он состоял только из библиотек Convector Smart Contract и нескольких утилит для установки и обновления смарт-контрактов во время разработки.

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

Несколько месяцев назад у Convector появился собственный CLI, поэтому настройка нового проекта Convector стала делом одной командной строки. Посмотрите этот пример, чтобы сравнить, как выглядит смарт-контракт Convector с обычным Go или Node в Hyperledger Fabric.

Convector CLI - лучший способ начать новый проект. Но он по-прежнему использовал довольно простые и фиксированные среды разработки.

Видите две последние команды (npm run env:restart и npm run cc:start -— toke 1)? Их заменяет недавно созданный Hurley.

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

Hurley не зависит от смарт-контрактов конвекторов. Так что он может работать с ним или без него. Вы также можете использовать его для установки и обновления цепного кода Golang и vanilla Node.

Начать с Херли довольно просто. Его единственное требование - наличие и работоспособность Docker CE. Hurley даже загрузит ваши зависимости Hyperledger Fabric.

$ npm i -g @worldsibu/hurley

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

$ git clone https://github.com/hyperledger/fabric-samples.git
$ cd fabric-samples

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

$ hurl new --organizations 3 --users 2 --channels 2

Подождите несколько секунд (возможно, минут, если Fabric еще не загружен).

Теперь перейдем к проекту Fabric Samples, который мы хотим установить. Обязательно запустите hurl install внутри папки, в которой находится ваш исходный код.

$ cd chaincode/fabcar/go/
$ hurl install fabcar golang
[hurley] - installing smart contract located at /Users/walter/Development/testhackhurley/fabric-samples/chaincode/fabcar/go
...
2019-01-07 09:49:08.483 CST [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
2019-01-07 09:49:28.928 CST [main] main -> INFO 003 Exiting.....

Вуаля! Вы сами успешно установили смарт-контракт.

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

# change 1.2 for the new version of your smart contract
$ hurl upgrade fabcar golang 1.2

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

После версии 1.0.5 Convector CLI будут генерироваться новые проекты с поддержкой Hurley вместо устаревшей Dev Environment. Вы по-прежнему можете запускать те же команды NPM или можете запускать команды Hurley напрямую, если вы установили его глобально.

# Install a blockchain
$ npm run env:restart
# Install to your blockchain - From the root of your project 
$ npm run cc:start -- product
$ npm run cc:start -- product 1.2
# Install a blockchain
$ hurl new
# Package your smart contract's code - From the root of your project 
$ npm run cc:package -- product org1
# Install to your blockchain - From the root of your project 
cd ./chaincode-product 
$ hurl install product node
$ hurl upgrade product node 1.2

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

Некоторые примеры:

# Install a chaincode with a different name
$ hurl install anothernameforyourcc node
# Install a chaincode in a different channel
$ hurl install <chaincode> node --channel ch2
# Install a chaincode in a path different than current
$ hurl install <chaincode> node -P ./sourcecode/chaincode

Считаете это полезным? Мы были бы рады получить известия от вас. Как вы думаете, какую следующую функцию должны поддерживать Hurley или Convector? Сообщите нам об этом на странице проблем.