2016-05-25 2 views
2

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

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

Я использовал this для настройки сети.

ответ

5

Есть два варианта:

  1. Если вы не используете Docker изображение, чтобы начать свои узлы, то вы должны развернуть chaincode, указав полный путь, другими словами, вы должны установить параметр при развертывании:

    -p /home/user/my/awesome/chaincode

  2. Если вы работаете ваши узлы/сверстникам в Докер изображения (например, инструкции, то вы следуете к настроить сеть развития), то у вас есть два варианта:

    первый - это указать код цепи внутри папки на пути $GOPATH/src/github.com/hyperledger/fabric/peer. Затем вы можете создать свое изображение (go test -run BuildImage_Peer).

    Теперь изображение докеры будет иметь цепочный код в его файловой системе (вы можете проверить его, выполнив навигацию с помощью docker run --rm -it -e CORE_VM_ENDPOINT=http://172.17.0.1:2375 -e CORE_PEER_ID=vp0 -e CORE_PEER_ADDRESSAUTODETECT=true hyperledger-peer /bin/bash).

    Наконец, чтобы развернуть цепочный код, вы должны установить путь (параметр -p) в папку, содержащую ваш код цепи, относительно $GOPATH/src/. Этот путь будет следующим: github.com/hyperledger/fabric/peer/yourfolderwiththecc.

    второй вариант аналогичен (еще не проверен), но он использует shared filesystem между докером и бродягой для доступа к цепочке. Идея состоит в том, чтобы запустить докер с чем-то вроде -v local-dev:localdev, так что папка локального dev в изображении докера связана с папкой локального dev-vagrant (где вы должны поместить свой код цепочки), а с -e GOPATH=/local-dev вы устанавливаете GOPATH так, чтобы относительный путь может начинаться с папки/local-dev.

Наблюдение: путь с github.com может сбивать с толку, потому что кажется, что он получает в chaincode от Github, но это только имя папки.

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

Кредиты @ghaskins за его помощь в определении того, как это сделать.

+0

Следует отметить, что $ GOPATH является типичной переменной окружения PATH и может иметь несколько путей. Следовательно, если вы используете $ GOPATH/src/github.com/...с $ GOPATH, который имеет несколько значений, вы не можете получить ожидаемый результат. – christo4ferris

0

Обычно я помещаю свой собственный цепочный код на github. Тогда:

$ docker run -i -t hyperledger/fabric-peer /bin/bash 

# git clone https://github.com/xxx/myOwnChaincode.git; exit 

$ docker commit -m 'mm' -a 'aa' containerId xxx/fabric-peer 

Наконец, докер изображение "ххх/ткань-PEER" содержит самозапрограммированы chaincodes. Для всех этих шагов я пишу скрипт оболочки, и он работает так хорошо для меня.

Смежные вопросы