【问题标题】:Running mutiple VMs in Hyperledger Fabric using Java SDK使用 Java SDK 在 Hyperledger Fabric 中运行多个 VM
【发布时间】:2021-08-11 09:29:39
【问题描述】:

我有一个运行区块链网络 (Hyperledger Fabric) 的 VM (ubuntu),另一个 VM 充当客户端并执行查询,例如使用 Java SDK 检索和插入数据。

我能够检索区块链中的数据,但无法将任何新数据插入区块链网络。我收到“未收到有效的提案响应。2 个对等错误响应。”

这是我的连接文件和我收到的结果。

连接文件:

{
    "name": "test-network-org1",
    "version": "1.0.0",
    "client": {
        "organization": "Org1",
        "connection": {
            "timeout": {
                "peer": {
                    "endorser": "300"
                }
            }
        }
    },
    "organizations": {
        "Org1": {
            "mspid": "Org1MSP",
            "peers": [
                "peer0.org1.example.com",
                 "peer0.org2.example.com"
            ],
            "certificateAuthorities": [
                "ca.org1.example.com",
                "ca.org2.example.com"
            ]
        }
    },
    "peers": {
        "peer0.org1.example.com": {
            "url": "grpcs://10.0.2.60:7051",
            "tlsCACerts": {
                "pem": "-----BEGIN CERTIFICATE-----\nMIICJzCCAc2gAwIBAgIULb7/j/0GlwSPTEwcuD3ZwYqVhMMwCgYIKoZIzj0EAwIw\ncDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH\nEwZEdXJoYW0xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjEwODAzMTQwODAwWhcNMzYwNzMwMTQwODAw\nWjBwMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDzANBgNV\nBAcTBkR1cmhhbTEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMT\nY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGdV\nLG2bjY03kHqdHyO/YUY0LGcs5LPWoL2a9Qf+abycQWBblGS+OjoIcQy+tpjaGfze\nUUzX7PKCvu66MBA9ZFCjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG\nAQH/AgEBMB0GA1UdDgQWBBRoa/rYznEUSQ6wxa3QBnYoJE0JiTAKBggqhkjOPQQD\nAgNIADBFAiEA8U5EZTDg4gRvEk1t5P17AN33KBBEv11KMF0INZLSFOICIHIWnxsl\naYsm5XHK0BtzO5esdrH7eAuSVfEm3IYR9lV4\n-----END CERTIFICATE-----\n"
            },
            "grpcOptions": {
                "ssl-target-name-override": "peer0.org1.example.com",
                "hostnameOverride": "peer0.org1.example.com"
            }
        },"peer0.org2.example.com": {
            "url": "grpcs://10.0.2.60:9051",
            "tlsCACerts": {
                "pem": "-----BEGIN CERTIFICATE-----\nMIICHTCCAcWgAwIBAgIUa41oI62aIbM2s5nfGO/sU6cNDukwCgYIKoZIzj0EAwIw\nbDELMAkGA1UEBhMCVUsxEjAQBgNVBAgTCUhhbXBzaGlyZTEQMA4GA1UEBxMHSHVy\nc2xleTEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eub3Jn\nMi5leGFtcGxlLmNvbTAeFw0yMTA4MDMxNDA4MDBaFw0zNjA3MzAxNDA4MDBaMGwx\nCzAJBgNVBAYTAlVLMRIwEAYDVQQIEwlIYW1wc2hpcmUxEDAOBgNVBAcTB0h1cnNs\nZXkxGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2NhLm9yZzIu\nZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ4jCi925YlDrwL\nrIBljitpf7Gd8c5RIJBw9gn72zRc2+9h89l7a0U29bXcbKeKIKYNJ1lCghvpQl8o\nqhSOTkt9o0UwQzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBATAd\nBgNVHQ4EFgQUUTIWxF1E1xpGqm01rUJLNNIzG0kwCgYIKoZIzj0EAwIDRgAwQwIf\nejZRhC3VLaq6pWz9SZf6LXfvhqSHpJ+XjU4rIByh6QIgQFu2dD4E0PprVueMt4Wk\nmox6VIXeNgISzOn11lRl10g=\n-----END CERTIFICATE-----\n"
            },
            "grpcOptions": {
                "ssl-target-name-override": "peer0.org2.example.com",
                "hostnameOverride": "peer0.org2.example.com"
            }
        }
    },
    "certificateAuthorities": {
        "ca.org1.example.com": {
            "url": "https://10.0.2.60:7054",
            "caName": "ca-org1",
            "tlsCACerts": {
                "pem": ["-----BEGIN CERTIFICATE-----\nMIICJzCCAc2gAwIBAgIULb7/j/0GlwSPTEwcuD3ZwYqVhMMwCgYIKoZIzj0EAwIw\ncDELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMQ8wDQYDVQQH\nEwZEdXJoYW0xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMjEwODAzMTQwODAwWhcNMzYwNzMwMTQwODAw\nWjBwMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGggQ2Fyb2xpbmExDzANBgNV\nBAcTBkR1cmhhbTEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMT\nY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGdV\nLG2bjY03kHqdHyO/YUY0LGcs5LPWoL2a9Qf+abycQWBblGS+OjoIcQy+tpjaGfze\nUUzX7PKCvu66MBA9ZFCjRTBDMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAG\nAQH/AgEBMB0GA1UdDgQWBBRoa/rYznEUSQ6wxa3QBnYoJE0JiTAKBggqhkjOPQQD\nAgNIADBFAiEA8U5EZTDg4gRvEk1t5P17AN33KBBEv11KMF0INZLSFOICIHIWnxsl\naYsm5XHK0BtzO5esdrH7eAuSVfEm3IYR9lV4\n-----END CERTIFICATE-----\n"]
            },
            "httpOptions": {
                "verify": false
            }
        },        
        "ca.org2.example.com": {
            "url": "https://10.0.2.60:8054",
            "caName": "ca-org2",
            "tlsCACerts": {
                "pem": ["-----BEGIN CERTIFICATE-----\nMIICHTCCAcWgAwIBAgIUa41oI62aIbM2s5nfGO/sU6cNDukwCgYIKoZIzj0EAwIw\nbDELMAkGA1UEBhMCVUsxEjAQBgNVBAgTCUhhbXBzaGlyZTEQMA4GA1UEBxMHSHVy\nc2xleTEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eub3Jn\nMi5leGFtcGxlLmNvbTAeFw0yMTA4MDMxNDA4MDBaFw0zNjA3MzAxNDA4MDBaMGwx\nCzAJBgNVBAYTAlVLMRIwEAYDVQQIEwlIYW1wc2hpcmUxEDAOBgNVBAcTB0h1cnNs\nZXkxGTAXBgNVBAoTEG9yZzIuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2NhLm9yZzIu\nZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ4jCi925YlDrwL\nrIBljitpf7Gd8c5RIJBw9gn72zRc2+9h89l7a0U29bXcbKeKIKYNJ1lCghvpQl8o\nqhSOTkt9o0UwQzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBATAd\nBgNVHQ4EFgQUUTIWxF1E1xpGqm01rUJLNNIzG0kwCgYIKoZIzj0EAwIDRgAwQwIf\nejZRhC3VLaq6pWz9SZf6LXfvhqSHpJ+XjU4rIByh6QIgQFu2dD4E0PprVueMt4Wk\nmox6VIXeNgISzOn11lRl10g=\n-----END CERTIFICATE-----\n"]
            },
            "httpOptions": {
                "verify": false
            }        
      }
    }
}

结果:

An identity for the admin user "admin" already exists in the wallet
An identity for the user "Khaled" already exists in the wallet
[{"Key":"CAR0","Record":{"make":"Toyota","model":"Prius","colour":"blue","owner":"Tomoko"}},{"Key":"CAR1","Record":{"make":"Ford","model":"Mustang","colour":"red","owner":"Brad"}},{"Key":"CAR2","Record":{"make":"Hyundai","model":"Tucson","colour":"green","owner":"Jin Soo"}},{"Key":"CAR3","Record":{"make":"Volkswagen","model":"Passat","colour":"yellow","owner":"Max"}},{"Key":"CAR4","Record":{"make":"Tesla","model":"S","colour":"black","owner":"Adriana"}},{"Key":"CAR5","Record":{"make":"Peugeot","model":"205","colour":"purple","owner":"Michel"}},{"Key":"CAR6","Record":{"make":"Chery","model":"S22L","colour":"white","owner":"Aarav"}},{"Key":"CAR7","Record":{"make":"Fiat","model":"Punto","colour":"violet","owner":"Pari"}},{"Key":"CAR8","Record":{"make":"Tata","model":"Nano","colour":"indigo","owner":"Valeria"}},{"Key":"CAR9","Record":{"make":"Holden","model":"Barina","colour":"brown","owner":"Shotaro"}}]
error:org.hyperledger.fabric.gateway.ContractException: No valid proposal responses received. 2 peer error responses: Channel Channel{id: 1, name: mychannel} Sending proposal with transaction: 8283aefea22657d68203722cd96066fb48924ce754772627a5c47ba9d9c8d475 to Peer{ id: 9, name: peer0.org2.example.com:9051, channelName: mychannel, url: grpcs://peer0.org2.example.com:9051, mspid: Org2MSP} failed because of: gRPC failure=Status{code=UNAVAILABLE, description=Unable to resolve host peer0.org2.example.com, cause=java.lang.RuntimeException: java.net.UnknownHostException: peer0.org2.example.com
at io.grpc.internal.DnsNameResolver.resolveAll(DnsNameResolver.java:420)
at io.grpc.internal.DnsNameResolver$Resolve.resolveInternal(DnsNameResolver.java:256)
at io.grpc.internal.DnsNameResolver$Resolve.run(DnsNameResolver.java:213)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: java.net.UnknownHostException: peer0.org2.example.com
at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:800)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1507)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1366)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1300)
at io.grpc.internal.DnsNameResolver$JdkAddressResolver.resolveAddress(DnsNameResolver.java:640)
at io.grpc.internal.DnsNameResolver.resolveAll(DnsNameResolver.java:388)
... 5 more
}; Channel Channel{id: 1, name: mychannel} Sending proposal with transaction: 8283aefea22657d68203722cd96066fb48924ce754772627a5c47ba9d9c8d475 to Peer{ id: 7, name: peer0.org1.example.com:7051, channelName: mychannel, url: grpcs://peer0.org1.example.com:7051, mspid: Org1MSP} failed because of: gRPC failure=Status{code=UNAVAILABLE, description=Unable to resolve host peer0.org1.example.com, cause=java.lang.RuntimeException: java.net.UnknownHostException: peer0.org1.example.com
at io.grpc.internal.DnsNameResolver.resolveAll(DnsNameResolver.java:420)
at io.grpc.internal.DnsNameResolver$Resolve.resolveInternal(DnsNameResolver.java:256)
at io.grpc.internal.DnsNameResolver$Resolve.run(DnsNameResolver.java:213)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: java.net.UnknownHostException: peer0.org1.example.com
at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:800)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1507)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1366)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1300)
at io.grpc.internal.DnsNameResolver$JdkAddressResolver.resolveAddress(DnsNameResolver.java:640)
at io.grpc.internal.DnsNameResolver.resolveAll(DnsNameResolver.java:388)
... 5 more
}

org.hyperledger.fabric.gateway.ContractException: CAR11 does not exist

at org.hyperledger.fabric.gateway.impl.query.SingleQueryHandler.evaluate(SingleQueryHandler.java:50)
at org.hyperledger.fabric.gateway.impl.TransactionImpl.evaluate(TransactionImpl.java:207)
at org.hyperledger.fabric.gateway.impl.ContractImpl.evaluateTransaction(ContractImpl.java:55)
at org.example.ClientApp.main(ClientApp.java:52)
at org.example.ClientTest.testFabCar(ClientTest.java:32)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:221)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)


Process finished with exit code 255

【问题讨论】:

    标签: java hyperledger-fabric blockchain


    【解决方案1】:

    您收到了java.net.UnknownHostException: peer0.org2.example.com。看起来您的客户端无法使用该地址连接到对等方。查看 VM 之间的网络设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多