当前位置: 首页 > 知识库问答 >
问题:

在Hyperledger Fabric V1.0的本地开发环境中使用REST API支持

汪庆
2023-03-14

我已经设置了一个HyperLedger Fabric V1.0网络,其中有4个组织,每个组织有1个对等体,通过以下步骤构建您的第一个网络。

现在我有

  1. org1.example.com-对等项:peer0.org1.example.com和msp:org1msp
  2. org2.example.com-对等项:peer0.org2.example.com和msp:org2msp
  3. org3.example.com-对等项:peer0.org3.example.com和msp:org3msp
  4. org4.example.com-对等项:peer0.org4.example.com和msp:org4msp

现在我可以将链码安装到对等点,并在通道上实例化链码。我还可以通过使用这里提到的命令来调用和查询链代码,比如

invoke:
对等链码invoke-o orderer.example.com:7050--tls$core_peer_tls_enabled--cafile/opt/goPath/src/github.com/hyperledger/fabric/peer/crypto/ordererorganizations/example.com/orderers/ordererorganizations/msp/Tlscacerts/tlsca.example.com-cert.pem-c$channel_name-n mycc-c'{“args”:[“invoke”,“a”,“

查询:
对等链码查询-C$channel_name-n mycc-c'{“args”:[“query”,“a”]}‘

我以前使用的是IBM Bluemix提供的Hyperledger Fabric V0.6服务,我的Java应用程序通过Rest API调用链代码。

我如何在这个使用docker映像的本地网络设置中使用这里的Rest API,那么我的Java应用程序就可以与我的链码交互了。
由于我不太熟悉此本地网络设置,请建议我如何使其工作。

注意:
我使用的是Windows7计算机,网络是通过运行docker quick start terminal中的命令来设置的

事先谢谢..

共有1个答案

拓拔弘亮
2023-03-14

Hyperledger Fabric V.1.0.0中没有REST API,但是有Java SDK可以用来与对等体交互。您可以使用以下maven依赖项来设置您的Java项目:

<dependency>
  <groupId>org.hyperledger.fabric-sdk-java</groupId>
  <artifactId>fabric-sdk-java</artifactId>
  <version>1.0.0</version>
</dependency>

现在您可以使用SDKAPI来调用/查询链码:

获取HF客户端实例

    final HFClient client = HFClient.createNewInstance();

为客户端设置加密材料

    // Set default crypto suite for HF client
    client.setCryptoSuite(CryptoSuite.Factory.getCryptoSuite());

    client.setUserContext(new User() {

        public String getName() {
            return "testUser";
        }

        public Set<String> getRoles() {
            return null;
        }

        public String getAccount() {
            return null;
        }

        public String getAffiliation() {
            return null;
        }

        public Enrollment getEnrollment() {
            return new Enrollment() {
                public PrivateKey getKey() {
                    // Load your private key
                }

                public String getCert() {
                    // Read client certificate
                }
            };
        }

        public String getMspId() {
            return "Org1MSP";
        }
    });

现在通道配置

    final Channel channel = client.newChannel("mychannel");

    channel.addOrderer(client.newOrderer("orderer0", "grpc://localhost:7050"));
    channel.addPeer(client.newPeer("peer0", "grpc://localhost:7051"));

    channel.initialize();

创建交易记录建议:

    final TransactionProposalRequest proposalRequest = client.newTransactionProposalRequest();

    final ChaincodeID chaincodeID = ChaincodeID.newBuilder()
            .setName("myCC")
            .setVersion("1.0")
            .setPath("github.com/yourpackage/chaincode/")
            .build();

    proposalRequest.setChaincodeID(chaincodeID);
    proposalRequest.setFcn("fcn");
    proposalRequest.setProposalWaitTime(TimeUnit.SECONDS.toMillis(10));
    proposalRequest.setArgs(new String[]{"arg1", "arg2"});

发送建议

    final Collection<ProposalResponse> responses = channel.sendTransactionProposal(proposalRequest);

    CompletableFuture<BlockEvent.TransactionEvent> txFuture = channel.sendTransaction(responses, client.getUserContext());

    BlockEvent.TransactionEvent event = txFuture.get();

    System.out.println(event.toString());
 类似资料:
  • 问题内容: 我已经建立了 HyperLedger面料V1.0网络 与 4个组织 各有1对 通过以下步骤建立你的第一个网络。 我现在有 **org1.example.com- 与 peer : peer0.org1.example.com 和 msp : Org1MSP** **org2.example.com- 与 peer : peer0.org2.example.com 和 msp : Org

  • 注意:本文停止更新,请直接转到kubernetes-vagrant-centos-cluster仓库浏览最新版本。 当我们需要在本地开发时,更希望能够有一个开箱即用又可以方便定制的分布式开发环境,这样才能对Kubernetes本身和应用进行更好的测试。现在我们使用Vagrant和VirtualBox来创建一个这样的环境。 部署时需要使用的配置文件和vagrantfile请见:https://git

  • 问题内容: Kubernetes似乎只不过是将容器部署到集群云中。似乎没有碰到的是开发和暂存环境(或类似环境)。 在开发过程中,您希望通过一些重要更改尽可能接近生产环境: 本地部署(或至少在 您只有您可以访问的地方 ) 在页面刷新时使用 最新的源代码 (假设它是一个网站;理想情况下,在本地文件保存上页面自动刷新,如果您挂载源代码并使用诸如Yeoman之类的东西就可以完成)。 同样,人们可能希望非公

  • 简介 Xiaomi Cloud-ML也支持基于GPU的开发环境,用法与训练任务相同,可参考 使用GPU训练 。 开发环境的GPU数量大于0时,开启GPU加速。系统为开启GPU的开发环境分配GPU,并且镜像内安装相应软件包。 使用命令行启用GPU 用户在使用命令行创建开发环境时,可以使用参数指定需要的GPU个数。 cloudml dev create -n mydev -p mypassword -

  • 我有一个长期的项目,是使用与redis和一个问题,已经开始,我相信只有升级到sidkiq 3。 问题是,如果不先启动redis服务器,我就无法运行正在开发的rails(4.1.4)应用程序。我在启动rails服务器时遇到的错误与我在没有首先启动redis的情况下运行bundle exec sidekiq时遇到的错误相同。在没有运行redis的情况下运行我的rails应用程序以前从来都不是问题,即使

  • Zack Tollmanz为WordPress编写了一个新的Memcached对象缓存库。这个库基于Ryan Boren开发的WordPress Memcache插件。 WordPress带有一个默认的对象缓存。可以通过将一个名为object-cache.php文件的文件复制到wp-content文件夹的根目录中来替换这个默认缓存。object-cache.php文件将包含替换对象缓存的实现。 T