免责声明:我之前没有任何软件开发经验,并且从 4 个月前开始负责开发区块链应用程序。请原谅我对大多数事情缺乏了解。
我目前正在构建一个 Web 应用程序来与 Hyperledger Fabric 进行交互。我已经设法为对等节点、排序节点等启动 docker 容器,每个容器都在连接配置文件中定义,并具有自己的本地主机端口。
我还在开发一个简单的前端和服务器端restAPI,并且已经实现了允许用户登录并设置他们的用户上下文并执行一些特定于应用程序的功能的功能。
对于项目的区块链方面,我正在尝试修改“余额转移”(https://github.com/hyperledger/fabric-samples/blob/release-1.4/balance-transfer/app.js)示例我的用例的织物样品。
到目前为止,我已经设法建立“通道创建”端点,以允许 Web 应用程序上的管理员通过使用 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
似乎提供了对等方名称(必须在连接配置文件中指定)作为将对等方加入通道的请求。这对我来说不太有意义,因为我设想对等点就像访问 Web 应用程序的“不同 IP 的用户”。通过提供连接配置文件引用名称来指定哪些对等方加入通道似乎是一种静态(硬编码、非动态)方法。
我不明白的是:如何将经过身份验证的用户分配给他们的个人对等上下文,并且在 Web 应用程序上设置他们自己的对等上下文,用户能够自己加入频道?
Fabric 教程仅通过 CLI 执行 peer 上下文的切换,并通过 CLI 将 peer 加入通道。
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 个经过身份验证的用户的对等上下文,并且以另一个用户身份登录将意味着对等上下文更改为当前经过身份验证的另一个用户。
在这样一个分散的设置中,我似乎无法理解物理意义上的对等点。请为我提供详细和外行的解释,以尽可能地理解这个概念。非常感谢!