Hyperledger fabric 如何在CLI容器外部查询Hyperledger结构区块链数据?
我正在使用fabric示例中的./byfn.sh脚本启动我的区块链。 我想从区块链中调用和查询PHP网站的数据 我知道我只能使用CLI容器中的API调用,或者使用JavaSDK/NodeSDK、RESTapi 如何以最简单的方式从区块链查询数据? 我在看NodeSDK和RestApi,但我没有看到太多的指南来帮助我,因此这个问题。 对不起,我问了一些新手问题Hyperledger fabric 如何在CLI容器外部查询Hyperledger结构区块链数据?,hyperledger-fabric,Hyperledger Fabric,我正在使用fabric示例中的./byfn.sh脚本启动我的区块链。 我想从区块链中调用和查询PHP网站的数据 我知道我只能使用CLI容器中的API调用,或者使用JavaSDK/NodeSDK、RESTapi 如何以最简单的方式从区块链查询数据? 我在看NodeSDK和RestApi,但我没有看到太多的指南来帮助我,因此这个问题。 对不起,我问了一些新手问题 谢谢 调用Hyperledger结构对等方并与之交互的正确方式是通过SDK,以下是可用SDK的列表: Java SDK GoLang SD
谢谢 调用Hyperledger结构对等方并与之交互的正确方式是通过SDK,以下是可用SDK的列表:
更新 根据@christo4ferris的建议,还有一个额外的项目: (哪一个可能是您感兴趣的)
例如,您可以使用golang SDK并执行以下操作:
var错误
conf,err:=config.InitConfig(“config.yaml”)
如果出错!=零{
fmt.Println(错误)
返回
}
cl:=fabricclient.NewClient(conf)
bccspFactory.InitFactories(conf.CSPConfig())
cl.SetCryptoSuite(bccspFactory.GetDefault())
privKey:=filepath.Join(conf.CryptoConfigPath(),“密钥路径”)
publikey:=filepath.Join(conf.CryptoConfigPath(),“证书路径”)
mspID,err:=conf.mspID(“org1”)
如果出错!=零{
fmt.Println(错误)
返回
}
user,err:=fabapi.newpreenrolleuser(conf,privKey,pubKey,“user1”,mspID,cl.GetCryptoSuite())
如果出错!=零{
fmt.Println(错误)
返回
}
cl.SetUserContext(用户)
o,err:=order.neworder(fmt.Sprintf(“%s:%d”,orderconf.Host,orderconf.Port),
filepath.Join(conf.CryptoConfigPath(),“订购方证书路径”),
“order.example.com”,conf)
如果出错!=零{
fmt.Println(错误)
返回
}
peers,err:=conf.PeersConfig(“org1”)
如果出错!=零{
fmt.Println(错误)
返回
}
p,err:=peer.NewPeer(fmt.Sprintf(“%s:%d”,peers[0]。主机,peers[0]。端口),conf)
如果出错!=零{
fmt.Println(错误)
}
ch,err:=cl.NewChannel(“mychannel”)
如果出错!=零{
fmt.Println(错误)
返回
}
ch.addOrder(o)
总会计师(p)
首席执行官(p)
cl.SaveUserToStateStore(用户,true)
txRequest:=apitxn.ChaincodeInvokeRequest{
目标:[]apitxn.ProposalProcessor{p},
Fcn:“myFCN”,
Args:[]字符串{“myargs”},
TransientMap:map[string][]字节{},
ChaincodeID:“helloworld”,
}
proposalResponse,u2;,err:=ch.SendTransactionProposal(txRequest)
如果出错!=零{
fmt.Println(错误)
返回
}
fmt.Printf(“%v\n”,proposalResponse[0]。proposalResponse)
tx,err:=ch.CreateTransaction(proposalResponse)
如果出错!=零{
fmt.Println(错误)
返回
}
txResponse,err:=ch.SendTransaction(tx)
如果出错!=零{
fmt.Println(错误)
返回
}
fmt.Println(txResponse[0])
这与所有SDK的工作方式非常相似。谢谢!我已经读了一些,并决定从fabcar node sdk查询教程开始:)有意义,让我们知道它是如何进行的:)我想在这里补充一点,REST sdk的工作已经开始