Отказ от ответственности: У меня нет никакого предшествующего опыта в разработке программного обеспечения, и с 4 месяца назад мне поручено разрабатывать приложение с блокчейном.Пожалуйста, прости меня за отсутствие знаний о большинстве вещей.
В настоящее время я создаю веб-приложение для взаимодействия с Hyperledger Fabric.Мне удалось раскрутить Docker-контейнеры для одноранговых узлов, узлов-заказчиков и т. Д., Каждый из которых определен в профиле соединения, с их собственными портами localhost.
Я также разрабатываю простой интерфейс переднего плана и restAPI на стороне сервера при полученииперейти и получил функциональность, которая позволяет пользователю войти в систему и установить свой пользовательский контекст и выполнять некоторые специфические для приложения функции.
Для аспекта Blockchain проекта я пытаюсь изменить «перенос баланса» (https://github.com/hyperledger/fabric-samples/blob/release-1.4/balance-transfer/app.js) пример в примере матрицы для моего варианта использования.
До сих пор мне удалось установить конечную точку «Создание канала», чтобы администратор веб-приложения мог выполнять создание канала посредством использования.Hyperledger Fabric SDK, загрузив файл channel.tx.
Но я теряюсь, когда мне нужно присоединить одноранговые узлы к каналу. Пример примера матрицы имеет следующий код.
// Join Channel
app.post('/channels/:channelName/peers', async function(req, res) {
logger.info('<<<<<<<<<<<<<<<<< J O I N C H A N N E L >>>>>>>>>>>>>>>>>');
var channelName = req.params.channelName;
var peers = req.body.peers;
logger.debug('channelName : ' + channelName);
logger.debug('peers : ' + peers);
logger.debug('username :' + req.username);
logger.debug('orgname:' + req.orgname);
if (!channelName) {
res.json(getErrorMessage('\'channelName\''));
return;
}
if (!peers || peers.length == 0) {
res.json(getErrorMessage('\'peers\''));
return;
}
let message = await join.joinChannel(channelName, peers, req.username, req.orgname);
res.send(message);
});
Согласно фрагменту из скрипта testAPI.sh (https://github.com/hyperledger/fabric-samples/blob/release-1.4/balance-transfer/testAPIs.sh)
echo "POST request Join channel on Org1"
echo
curl -s -X POST \
http://localhost:4000/channels/mychannel/peers \
-H "authorization: Bearer $ORG1_TOKEN" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org1.example.com","peer1.org1.example.com"]
}'
echo
echo
echo "POST request Join channel on Org2"
echo
curl -s -X POST \
http://localhost:4000/channels/mychannel/peers \
-H "authorization: Bearer $ORG2_TOKEN" \
-H "content-type: application/json" \
-d '{
"peers": ["peer0.org2.example.com","peer1.org2.example.com"]
}'
echo
echo
Кажется, что• имена пиров (которые должны быть указаны в профиле соединения) предоставляются в качестве запроса на присоединение пиров к каналу.Что не совсем понятно для меня, так как я предполагаю, что одноранговые пользователи будут похожи на пользователей разных IP-адресов, получающих доступ к веб-приложению.Указание, какие одноранговые узлы присоединяются к каналу путем предоставления их ссылочного имени профиля подключения, кажется статическим (жестко запрограммированным, нединамическим).
Что я не понимаю, так это: Как я могу назначитьаутентифицированный пользователь для своего индивидуального однорангового контекста и с помощью своего собственного однорангового контекста, установленного в веб-приложении, пользователи могут присоединиться к каналу самостоятельно?
Учебные руководства по фабрике выполняют только переключениеконтекст одноранговой сети через CLI, а также присоединение одноранговых узлов к каналу через CLI.CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp CORE_PEER_ADDRESS=peer0.org2.example.com:9051 CORE_PEER_LOCALMSPID="Org2MSP" CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt peer channel join -b mychannel.block
Как можно добиться переключения контекста однорангового узла с помощью Hyperledger Fabric SDK?или даже 1 одноранговый контекст 1 аутентифицированному пользователю, и вход в систему как другого пользователя будет означать, что контекст однорангового узла изменен на другого пользователя, который в настоящее время аутентифицирован.
Я не могу обернуть мойОбдумайте, что такое физический смысл в такой децентрализованной среде.Пожалуйста, предоставьте подробное и непрофессиональное объяснение для меня, чтобы понять концепцию как можно большеБольшое спасибо!