首页 > 解决方案 > Hyperledger Fabric 调用 Java 链码(作为外部服务)超时

问题描述

我正在尝试使用 Fabric 2.2.3通过Java将链代码实现为外部服务。对等方调用合约方法总是超时。

我的同行和网络应该没问题,因为当我在同一环境中使用GO运行合同服务时,它工作正常。我不知道我在哪一点做错或配置错误。

我的合同MyAssetContract.java

@Slf4j
@Contract(name = "myAssetContract", info = @Info(title = "MyAssetContract contract", description = "My Smart Contract", version = "0.0.1", license = @License(name = "Apache-2.0", url = "")))
@Default
public class MyAssetContract implements ContractInterface {

    public MyAssetContract() {
    }

    @Transaction()
    public boolean myAssetExists(Context ctx, String myAssetId) {
        log.info("myAssetExists: {}", myAssetId);
        byte[] buffer = ctx.getStub().getState(myAssetId);
        return (buffer != null && buffer.length > 0);
    }

    // other contract methods...

}

MyAsset.java: _

@DataType()
public class MyAsset {

    @Property()
    private String value;

    public MyAsset() {
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

我像这样启动服务:

try {
      ChaincodeServerProperties chaincodeServerProperties = new ChaincodeServerProperties();

      final int port = properties.getPort(); // get from SpringBoot configuration
      final String coreChaincodeIdName = properties.getCcid();  // get from SpringBoot configuration

      chaincodeServerProperties.setPortChaincodeServer(port);
      chaincodeServerProperties.setMaxConnectionAgeSeconds(Integer.MAX_VALUE);
      ContractRouter contractRouter = new ContractRouter(new String[] { "-i", coreChaincodeIdName });
      ChaincodeServer chaincodeServer = new NettyChaincodeServer(contractRouter, chaincodeServerProperties);
      contractRouter.startRouterWithChaincodeServer(chaincodeServer);
  } catch (Throwable e) {
      throw new RuntimeException("start ChaincodeServer failed", e);
}

合同服务启动日志:

(ignore Spring logs ...)

2021-10-18 16:58:02.362 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-429 - <<<<<<<<<<<<<Environment options>>>>>>>>>>>>
2021-10-18 16:58:02.363 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-430 - CORE_CHAINCODE_ID_NAME: null
2021-10-18 16:58:02.363 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-431 - CORE_PEER_ADDRESS: 127.0.0.1
2021-10-18 16:58:02.363 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-432 - CORE_PEER_TLS_ENABLED: false
2021-10-18 16:58:02.364 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-433 - CORE_PEER_TLS_ROOTCERT_FILE: null
2021-10-18 16:58:02.364 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-434 - CORE_TLS_CLIENT_KEY_PATH: null
2021-10-18 16:58:02.364 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-435 - CORE_TLS_CLIENT_CERT_PATH: null
2021-10-18 16:58:02.364 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-436 - CORE_PEER_LOCALMSPID: 
2021-10-18 16:58:02.364 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-437 - LOGLEVEL: null
2021-10-18 16:58:02.370 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-388 - <<<<<<<<<<<<<CommandLine options>>>>>>>>>>>>
2021-10-18 16:58:02.370 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-389 - CORE_CHAINCODE_ID_NAME: myAssetContract:bb0caa4c55ad6d7d3e58244b436c3858ed9d9726c4efccc0e75852d5523f0042
2021-10-18 16:58:02.370 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-390 - CORE_PEER_ADDRESS: 127.0.0.1:7051
2021-10-18 16:58:02.371 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-391 - CORE_PEER_TLS_ENABLED: false
2021-10-18 16:58:02.371 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-392 - CORE_PEER_TLS_ROOTCERT_FILE: null
2021-10-18 16:58:02.371 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-393 - CORE_TLS_CLIENT_KEY_PATH: null
2021-10-18 16:58:02.371 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-394 - CORE_TLS_CLIENT_CERT_PATH: null
2021-10-18 16:58:02.372 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-467 - <<<<<<<<<<<<<Properties options>>>>>>>>>>>>
2021-10-18 16:58:02.373 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-468 - {CORE_CHAINCODE_ID_NAME=myAssetContract:bb0caa4c55ad6d7d3e58244b436c3858ed9d9726c4efccc0e75852d5523f0042, CORE_PEER_ADDRESS=127.0.0.1}
2021-10-18 16:58:02.375 [INFO ] [] - org.hyperledger.fabric.metrics.Metrics-62 - Metrics disabled
2021-10-18 16:58:03.388 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.logging.InternalLoggerFactory-45 - Using SLF4J as the default logging framework
2021-10-18 16:58:03.390 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent-1003 - Platform: Windows
2021-10-18 16:58:03.395 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent0-396 - -Dio.netty.noUnsafe: false
2021-10-18 16:58:03.395 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent0-852 - Java version: 8
2021-10-18 16:58:03.397 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent0-121 - sun.misc.Unsafe.theUnsafe: available
2021-10-18 16:58:03.398 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent0-145 - sun.misc.Unsafe.copyMemory: available
2021-10-18 16:58:03.399 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent0-183 - java.nio.Buffer.address: available
2021-10-18 16:58:03.400 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent0-244 - direct buffer constructor: available
2021-10-18 16:58:03.401 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent0-314 - java.nio.Bits.unaligned: available, true
2021-10-18 16:58:03.402 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent0-379 - jdk.internal.misc.Unsafe.allocateUninitializedArray(int): unavailable prior to Java9
2021-10-18 16:58:03.402 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent0-386 - java.nio.DirectByteBuffer.<init>(long, int): available
2021-10-18 16:58:03.402 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent-1046 - sun.misc.Unsafe: available
2021-10-18 16:58:03.405 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent-1165 - -Dio.netty.tmpdir: C:\Users\alice\AppData\Local\Temp (java.io.tmpdir)
2021-10-18 16:58:03.405 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent-1244 - -Dio.netty.bitMode: 64 (sun.arch.data.model)
2021-10-18 16:58:03.406 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent-177 - -Dio.netty.maxDirectMemory: 3741319168 bytes
2021-10-18 16:58:03.407 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent-184 - -Dio.netty.uninitializedArrayAllocationThreshold: -1
2021-10-18 16:58:03.408 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.CleanerJava6-92 - java.nio.ByteBuffer.cleaner(): available
2021-10-18 16:58:03.408 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent-204 - -Dio.netty.noPreferDirect: false
2021-10-18 16:58:03.468 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-85 - <<<<<<<<<<<<<chaincodeServerProperties>>>>>>>>>>>>:

2021-10-18 16:58:03.468 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-86 - PortChaincodeServer:23456
2021-10-18 16:58:03.468 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-87 - MaxInboundMetadataSize:104857600
2021-10-18 16:58:03.468 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-88 - MaxInboundMessageSize:104857600
2021-10-18 16:58:03.469 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-89 - MaxConnectionAgeSeconds:2147483647
2021-10-18 16:58:03.469 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-90 - KeepAliveTimeoutSeconds:20
2021-10-18 16:58:03.469 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-91 - PermitKeepAliveTimeMinutes:1
2021-10-18 16:58:03.469 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-92 - KeepAliveTimeMinutes:1
2021-10-18 16:58:03.469 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-93 - PermitKeepAliveWithoutCalls:true
2021-10-18 16:58:03.469 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-94 - KeyPassword:null
2021-10-18 16:58:03.469 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-95 - KeyCertChainFile:null
2021-10-18 16:58:03.470 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-96 - KeyFile:null
2021-10-18 16:58:03.470 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-97 - isTlsEnabled:false
2021-10-18 16:58:03.470 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-98 - 

2021-10-18 16:58:03.490 [DEBUG] [] - io.grpc.netty.shaded.io.netty.channel.MultithreadEventLoopGroup-44 - -Dio.netty.eventLoopThreads: 16
2021-10-18 16:58:03.510 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.InternalThreadLocalMap-56 - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024
2021-10-18 16:58:03.511 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.InternalThreadLocalMap-59 - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096
2021-10-18 16:58:03.523 [DEBUG] [] - io.grpc.netty.shaded.io.netty.channel.nio.NioEventLoop-106 - -Dio.netty.noKeySetOptimization: false
2021-10-18 16:58:03.523 [DEBUG] [] - io.grpc.netty.shaded.io.netty.channel.nio.NioEventLoop-107 - -Dio.netty.selectorAutoRebuildThreshold: 512
2021-10-18 16:58:03.540 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.internal.PlatformDependent-907 - org.jctools-core.MpscChunkedArrayQueue: available
2021-10-18 16:58:05.119 [INFO ] [] - org.hyperledger.fabric.contract.routing.impl.ContractDefinitionImpl-70 - Found class: com.example.contract.MyAssetContract
2021-10-18 16:58:05.124 [INFO ] [] - org.hyperledger.fabric.contract.routing.impl.ContractDefinitionImpl-70 - Found class: org.hyperledger.fabric.contract.systemcontract.SystemContract
2021-10-18 16:58:05.129 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-56 - email 
2021-10-18 16:58:05.130 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-56 - name 
2021-10-18 16:58:05.130 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-56 - url 
2021-10-18 16:58:05.130 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-56 - url 
2021-10-18 16:58:05.131 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-56 - email 
2021-10-18 16:58:05.131 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-56 - name 
2021-10-18 16:58:05.132 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-56 - url 
2021-10-18 16:58:05.132 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-56 - url 
2021-10-18 16:58:05.132 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-56 - email 
2021-10-18 16:58:05.132 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-56 - name 
2021-10-18 16:58:05.132 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-56 - url 
2021-10-18 16:58:05.132 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-56 - url 
2021-10-18 16:58:05.135 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-118 - Validating schema created
2021-10-18 16:58:05.135 [INFO ] [] - org.hyperledger.fabric.contract.metadata.MetadataBuilder-80 - Running schema test validation
2021-10-18 16:58:05.265 [INFO ] [] - org.hyperledger.fabric.contract.ContractRouter-196 - Metadata follows:{
   "components": {"schemas": {"MyAsset": {
      "additionalProperties": false,
      "type": "object",
      "properties": {"value": {"type": "string"}},
      "$id": "com.example.contract.MyAsset"
   }}},
   "$schema": "https://fabric-shim.github.io/release-1.4/contract-schema.json",
   "contracts": {
      "myAssetContract": {
         "name": "myAssetContract",
         "transactions": [
            {
               "name": "myAssetExists",
               "returns": {"type": "boolean"},
               "parameters": [{
                  "schema": {"type": "string"},
                  "name": "arg1"
               }],
               "tags": [
                  "SUBMIT",
                  "INVOKE"
               ]
            }
         ],
         "info": {
            "license": {"name": "Apache-2.0"},
            "description": "My Smart Contract",
            "termsOfService": "",
            "title": "MyAssetContract contract",
            "version": "0.0.1",
            "contact": {}
         }
      },
      "org.hyperledger.fabric": {
         "name": "org.hyperledger.fabric",
         "transactions": [{
            "name": "GetMetadata",
            "returns": {"type": "string"},
            "parameters": [],
            "tags": [
               "SUBMIT",
               "INVOKE"
            ]
         }],
         "info": {
            "license": {"name": ""},
            "description": "Provides information about the contracts within this container",
            "termsOfService": "",
            "title": "Fabric System Contract",
            "version": "",
            "contact": {}
         }
      }
   },
   "info": {
      "license": {"name": "Apache-2.0"},
      "description": "My Smart Contract",
      "termsOfService": "",
      "title": "MyAssetContract contract",
      "version": "0.0.1",
      "contact": {}
   }
}
2021-10-18 16:58:05.265 [INFO ] [] - org.hyperledger.fabric.contract.ContractRouter-198 - Starting ChaincodeServer
2021-10-18 16:58:05.265 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-109 - start grpc server
2021-10-18 16:58:05.285 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.ResourceLeakDetector-130 - -Dio.grpc.netty.shaded.io.netty.leakDetection.level: simple
2021-10-18 16:58:05.286 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.ResourceLeakDetector-131 - -Dio.grpc.netty.shaded.io.netty.leakDetection.targetRecords: 4
2021-10-18 16:58:05.287 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator-156 - -Dio.netty.allocator.numHeapArenas: 16
2021-10-18 16:58:05.287 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator-157 - -Dio.netty.allocator.numDirectArenas: 16
2021-10-18 16:58:05.287 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator-159 - -Dio.netty.allocator.pageSize: 8192
2021-10-18 16:58:05.287 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator-164 - -Dio.netty.allocator.maxOrder: 11
2021-10-18 16:58:05.287 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator-168 - -Dio.netty.allocator.chunkSize: 16777216
2021-10-18 16:58:05.287 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator-169 - -Dio.netty.allocator.tinyCacheSize: 512
2021-10-18 16:58:05.287 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator-170 - -Dio.netty.allocator.smallCacheSize: 256
2021-10-18 16:58:05.287 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator-171 - -Dio.netty.allocator.normalCacheSize: 64
2021-10-18 16:58:05.287 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator-172 - -Dio.netty.allocator.maxCachedBufferCapacity: 32768
2021-10-18 16:58:05.288 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator-173 - -Dio.netty.allocator.cacheTrimInterval: 8192
2021-10-18 16:58:05.288 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator-174 - -Dio.netty.allocator.cacheTrimIntervalMillis: 0
2021-10-18 16:58:05.288 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator-175 - -Dio.netty.allocator.useCacheForAllThreads: true
2021-10-18 16:58:05.288 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.PooledByteBufAllocator-176 - -Dio.netty.allocator.maxCachedByteBuffersPerChunk: 1023
2021-10-18 16:58:05.308 [DEBUG] [] - io.grpc.netty.shaded.io.netty.channel.DefaultChannelId-79 - -Dio.netty.processId: 252300 (auto-detected)
2021-10-18 16:58:05.310 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.NetUtil-139 - -Djava.net.preferIPv4Stack: false
2021-10-18 16:58:05.311 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.NetUtil-140 - -Djava.net.preferIPv6Addresses: false
2021-10-18 16:58:06.232 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.NetUtil-224 - Loopback interface: lo (Software Loopback Interface 1, 127.0.0.1)
2021-10-18 16:58:06.233 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.NetUtil-289 - Failed to get SOMAXCONN from sysctl and file \proc\sys\net\core\somaxconn. Default: 200
2021-10-18 16:58:07.226 [DEBUG] [] - io.grpc.netty.shaded.io.netty.channel.DefaultChannelId-101 - -Dio.netty.machineId: e8:6a:64:ff:fe:71:3c:b1 (auto-detected)
2021-10-18 16:58:07.247 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.ByteBufUtil-86 - -Dio.netty.allocator.type: pooled
2021-10-18 16:58:07.247 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.ByteBufUtil-95 - -Dio.netty.threadLocalDirectBufferSize: 0
2021-10-18 16:58:07.247 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.ByteBufUtil-98 - -Dio.netty.maxThreadLocalCharBufferSize: 16384
2021-10-18 16:58:07.259 [INFO ] [] - org.hyperledger.fabric.shim.NettyGrpcServer-127 - Waits for the server to become terminated.

当我调用合约方法时,登录合约服务显示:

(ignore logs by io.grpc.netty.shaded.io.grpc.netty.NettyServerHandler line 214 and 191)
2021-10-18 17:02:14.862 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.AbstractByteBuf-63 - -Dio.grpc.netty.shaded.io.netty.buffer.checkAccessible: true
2021-10-18 17:02:14.863 [DEBUG] [] - io.grpc.netty.shaded.io.netty.buffer.AbstractByteBuf-64 - -Dio.grpc.netty.shaded.io.netty.buffer.checkBounds: true
2021-10-18 17:02:14.865 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.ResourceLeakDetectorFactory-195 - Loaded default ResourceLeakDetector: io.grpc.netty.shaded.io.netty.util.ResourceLeakDetector@17d8818a
2021-10-18 17:02:14.964 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.Recycler-97 - -Dio.netty.recycler.maxCapacityPerThread: 4096
2021-10-18 17:02:14.964 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.Recycler-98 - -Dio.netty.recycler.maxSharedCapacityFactor: 2
2021-10-18 17:02:14.964 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.Recycler-99 - -Dio.netty.recycler.linkCapacity: 16
2021-10-18 17:02:14.965 [DEBUG] [] - io.grpc.netty.shaded.io.netty.util.Recycler-100 - -Dio.netty.recycler.ratio: 8
2021-10-18 17:02:15.086 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-486 - Configuring channel connection to peer.
2021-10-18 17:02:15.086 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-486 - Configuring channel connection to peer.
2021-10-18 17:02:15.086 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-486 - Configuring channel connection to peer.
2021-10-18 17:02:15.086 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-486 - Configuring channel connection to peer.
2021-10-18 17:02:15.086 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-486 - Configuring channel connection to peer.
2021-10-18 17:02:15.086 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-486 - Configuring channel connection to peer.
2021-10-18 17:02:15.086 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-486 - Configuring channel connection to peer.
2021-10-18 17:02:15.086 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-486 - Configuring channel connection to peer.
2021-10-18 17:02:15.087 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-124 - Maximum Inbound Message Size [MAX_INBOUND_MESSAGE_SIZE] = 104857600
2021-10-18 17:02:15.087 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-124 - Maximum Inbound Message Size [MAX_INBOUND_MESSAGE_SIZE] = 104857600
2021-10-18 17:02:15.086 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-486 - Configuring channel connection to peer.
2021-10-18 17:02:15.087 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-124 - Maximum Inbound Message Size [MAX_INBOUND_MESSAGE_SIZE] = 104857600
2021-10-18 17:02:15.086 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-486 - Configuring channel connection to peer.
2021-10-18 17:02:15.086 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-486 - Configuring channel connection to peer.
2021-10-18 17:02:15.086 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-486 - Configuring channel connection to peer.
2021-10-18 17:02:15.087 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-124 - Maximum Inbound Message Size [MAX_INBOUND_MESSAGE_SIZE] = 104857600
2021-10-18 17:02:15.087 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-124 - Maximum Inbound Message Size [MAX_INBOUND_MESSAGE_SIZE] = 104857600
2021-10-18 17:02:15.087 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-124 - Maximum Inbound Message Size [MAX_INBOUND_MESSAGE_SIZE] = 104857600
2021-10-18 17:02:15.087 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-124 - Maximum Inbound Message Size [MAX_INBOUND_MESSAGE_SIZE] = 104857600
2021-10-18 17:02:15.087 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-124 - Maximum Inbound Message Size [MAX_INBOUND_MESSAGE_SIZE] = 104857600
2021-10-18 17:02:15.087 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-124 - Maximum Inbound Message Size [MAX_INBOUND_MESSAGE_SIZE] = 104857600
2021-10-18 17:02:15.087 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-124 - Maximum Inbound Message Size [MAX_INBOUND_MESSAGE_SIZE] = 104857600
2021-10-18 17:02:15.087 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-124 - Maximum Inbound Message Size [MAX_INBOUND_MESSAGE_SIZE] = 104857600
2021-10-18 17:02:15.087 [INFO ] [] - org.hyperledger.fabric.shim.ChaincodeBase-124 - Maximum Inbound Message Size [MAX_INBOUND_MESSAGE_SIZE] = 104857600
2021-10-18 17:02:15.142 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-125 - Max Pool Size [TP_MAX_POOL_SIZE]5
2021-10-18 17:02:15.143 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-126 - Queue Size [TP_CORE_POOL_SIZE]5000
2021-10-18 17:02:15.143 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-126 - Queue Size [TP_CORE_POOL_SIZE]5000
2021-10-18 17:02:15.143 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-126 - Queue Size [TP_CORE_POOL_SIZE]5000
2021-10-18 17:02:15.143 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-126 - Queue Size [TP_CORE_POOL_SIZE]5000
2021-10-18 17:02:15.143 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-126 - Queue Size [TP_CORE_POOL_SIZE]5000
2021-10-18 17:02:15.142 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-125 - Max Pool Size [TP_MAX_POOL_SIZE]5
2021-10-18 17:02:15.143 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-127 - Core Pool Size [TP_QUEUE_SIZE]5
2021-10-18 17:02:15.144 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-126 - Queue Size [TP_CORE_POOL_SIZE]5000
2021-10-18 17:02:15.144 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-127 - Core Pool Size [TP_QUEUE_SIZE]5
2021-10-18 17:02:15.144 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-127 - Core Pool Size [TP_QUEUE_SIZE]5
2021-10-18 17:02:15.144 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-126 - Queue Size [TP_CORE_POOL_SIZE]5000
2021-10-18 17:02:15.144 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-127 - Core Pool Size [TP_QUEUE_SIZE]5
2021-10-18 17:02:15.144 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-127 - Core Pool Size [TP_QUEUE_SIZE]5
2021-10-18 17:02:15.144 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-128 - Keep Alive Time [TP_KEEP_ALIVE_MS]5000
2021-10-18 17:02:15.144 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-128 - Keep Alive Time [TP_KEEP_ALIVE_MS]5000
2021-10-18 17:02:15.144 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-128 - Keep Alive Time [TP_KEEP_ALIVE_MS]5000
2021-10-18 17:02:15.144 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-128 - Keep Alive Time [TP_KEEP_ALIVE_MS]5000
2021-10-18 17:02:15.144 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-128 - Keep Alive Time [TP_KEEP_ALIVE_MS]5000
2021-10-18 17:02:15.143 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-127 - Core Pool Size [TP_QUEUE_SIZE]5
2021-10-18 17:02:15.143 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-125 - Max Pool Size [TP_MAX_POOL_SIZE]5
2021-10-18 17:02:15.143 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-125 - Max Pool Size [TP_MAX_POOL_SIZE]5
2021-10-18 17:02:15.142 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-125 - Max Pool Size [TP_MAX_POOL_SIZE]5
2021-10-18 17:02:15.145 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-128 - Keep Alive Time [TP_KEEP_ALIVE_MS]5000
2021-10-18 17:02:15.145 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-126 - Queue Size [TP_CORE_POOL_SIZE]5000
2021-10-18 17:02:15.143 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-126 - Queue Size [TP_CORE_POOL_SIZE]5000
2021-10-18 17:02:15.145 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-127 - Core Pool Size [TP_QUEUE_SIZE]5
2021-10-18 17:02:15.145 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskExecutor-40 - Thread pool created
2021-10-18 17:02:15.143 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-126 - Queue Size [TP_CORE_POOL_SIZE]5000
2021-10-18 17:02:15.147 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-127 - Core Pool Size [TP_QUEUE_SIZE]5
2021-10-18 17:02:15.143 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-127 - Core Pool Size [TP_QUEUE_SIZE]5
2021-10-18 17:02:15.145 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-126 - Queue Size [TP_CORE_POOL_SIZE]5000
2021-10-18 17:02:15.147 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-128 - Keep Alive Time [TP_KEEP_ALIVE_MS]5000
2021-10-18 17:02:15.147 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-128 - Keep Alive Time [TP_KEEP_ALIVE_MS]5000
2021-10-18 17:02:15.147 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-127 - Core Pool Size [TP_QUEUE_SIZE]5
2021-10-18 17:02:15.147 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskExecutor-40 - Thread pool created
2021-10-18 17:02:15.145 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-126 - Queue Size [TP_CORE_POOL_SIZE]5000
2021-10-18 17:02:15.147 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-128 - Keep Alive Time [TP_KEEP_ALIVE_MS]5000
2021-10-18 17:02:15.145 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-127 - Core Pool Size [TP_QUEUE_SIZE]5
2021-10-18 17:02:15.145 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-128 - Keep Alive Time [TP_KEEP_ALIVE_MS]5000
2021-10-18 17:02:15.146 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskExecutor-40 - Thread pool created
2021-10-18 17:02:15.146 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskExecutor-40 - Thread pool created
2021-10-18 17:02:15.149 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskExecutor-40 - Thread pool created
2021-10-18 17:02:15.146 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskExecutor-40 - Thread pool created
2021-10-18 17:02:15.149 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-128 - Keep Alive Time [TP_KEEP_ALIVE_MS]5000
2021-10-18 17:02:15.149 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskExecutor-40 - Thread pool created
2021-10-18 17:02:15.150 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskExecutor-40 - Thread pool created
2021-10-18 17:02:15.146 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskExecutor-40 - Thread pool created
2021-10-18 17:02:15.147 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskExecutor-40 - Thread pool created
2021-10-18 17:02:15.147 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-127 - Core Pool Size [TP_QUEUE_SIZE]5
2021-10-18 17:02:15.150 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskExecutor-40 - Thread pool created
2021-10-18 17:02:15.151 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-128 - Keep Alive Time [TP_KEEP_ALIVE_MS]5000
2021-10-18 17:02:15.152 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskExecutor-40 - Thread pool created
2021-10-18 17:02:15.217 [INFO ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-315 - Registering new chaincode name: "myAssetContract:bb0caa4c55ad6d7d3e58244b436c3858ed9d9726c4efccc0e75852d5523f0042"
(and 11 more...)
2021-10-18 17:02:15.266 [WARN ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-169 - [        ] Received REGISTERED: cannot handle
2021-10-18 17:02:15.276 [WARN ] [] - org.hyperledger.fabric.shim.impl.InvocationTaskManager-209 - [        ] Received READY: cannot handle

和我的 invkoe 结果:

failed to execute transaction c44f03af9a179de32a5a724343e0a509b8d30282daa34375db01b9deffd52ad1: error sending: timeout expired while executing transaction 

标签: javahyperledger-fabrichyperledger-chaincode

解决方案


在为智能合约开发设置新项目时,很多事情都可能出错。一个建议是,在与 Spring Boot 项目链接并编写链代码函数之前,从已知参考开始,并使用它来解决环境中的任何问题。一旦你有了工作参考,就应该更容易介绍你的合同逻辑,或者使用示例作为模板设置一个新项目。

例如,我们使用新的test-network-k8s构建了基于链码即服务的智能合约,取得了很好的成果。该平台在本地 Kubernetes 集群上重构测试网络,可用于构建和编辑在本地机器上的调试器(例如 IntelliJ、Eclipse、VSCode 等)或 docker 容器中运行的链代码合约。kube 测试网络还包括一个预先配置的外部构建器,因此它应该“准备就绪”,只需最少的配置或无需配置。

Fabric 文档表明 Go 和 Node 是唯一支持外部构建器的平台,但这是不正确的 - 尽管在 fabric-samples 项目中缺乏好的示例,但仍支持 Java。有关更多详细信息,请参阅问题 #2916

一些有用的链接可以帮助您开始使用 Java 外部服务:

  • 问题 #2916,描述了在 fabric-samples 中需要参考 Java 示例。请注意,在这张票中,用户还报告说链代码总是“超时”。

  • test-network-k8s:将智能合约编写为服务的替代开发平台。

  • 调试链码


推荐阅读