diff --git a/Changelog.md b/Changelog.md index cd316c06..596b55e6 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,12 @@ +### v1.1.1 + +(2021-04-02) + +**更改** + +* 升级web3sdk,修复偶现的断连问题 +* 优化区块头验证代码结构 + ### v1.1.0 (2021-02-02) @@ -27,7 +36,7 @@ * 不允许call事务中的资源 * 删除地址缓存,统一查CNS合约 * 优化部分接口命名与定义 - + ### v1.0.0-rc4 (2020-08-18) diff --git a/build.gradle b/build.gradle index 327b3f78..ed4ec0ef 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ plugins { apply plugin: 'com.github.johnrengelman.shadow' group 'com.webank.wecross' -version '1.1.0' +version '1.1.1' sourceCompatibility = 1.8 targetCompatibility = 1.8 @@ -73,7 +73,7 @@ dependencies { implementation 'com.google.guava:guava:30.1-jre' implementation 'org.yaml:snakeyaml:1.27' - implementation ('org.fisco-bcos:web3sdk:2.6.4.01220-SNAPSHOT') { + implementation ('org.fisco-bcos:web3sdk:2.6.4-SNAPSHOT') { exclude group: "org.ethereum" exclude group: "org.fisco-bcos", module: "tcnative" exclude group: "io.netty" diff --git a/release_note.txt b/release_note.txt index 795460fc..56130fb3 100644 --- a/release_note.txt +++ b/release_note.txt @@ -1 +1 @@ -v1.1.0 +v1.1.1 diff --git a/src/main/java/com/webank/wecross/stub/bcos/BCOSConnection.java b/src/main/java/com/webank/wecross/stub/bcos/BCOSConnection.java index 0a55cf38..6901e53b 100644 --- a/src/main/java/com/webank/wecross/stub/bcos/BCOSConnection.java +++ b/src/main/java/com/webank/wecross/stub/bcos/BCOSConnection.java @@ -499,6 +499,7 @@ public void handleAsyncGetBlockRequest(Request request, Callback callback) { List headerData = new ArrayList<>(); headerData.add(objectMapper.writeValueAsString(blockHeader)); block.setExtraData(headerData); + if (logger.isDebugEnabled()) { logger.debug("handleAsyncGetBlockRequest: block.Ext: {}", headerData); } diff --git a/src/main/java/com/webank/wecross/stub/bcos/BCOSDriver.java b/src/main/java/com/webank/wecross/stub/bcos/BCOSDriver.java index e82f1d5e..bff6ba70 100644 --- a/src/main/java/com/webank/wecross/stub/bcos/BCOSDriver.java +++ b/src/main/java/com/webank/wecross/stub/bcos/BCOSDriver.java @@ -977,6 +977,7 @@ public void asyncGetBlock( String blockVerifierString = connection.getProperties().get(BCOSConstant.BCOS_SEALER_LIST); String nodeVersion = connection.getProperties().get(BCOSConstant.BCOS_NODE_VERSION); + connection.asyncSend( request, response -> { diff --git a/src/main/java/com/webank/wecross/stub/bcos/common/BCOSConstant.java b/src/main/java/com/webank/wecross/stub/bcos/common/BCOSConstant.java index ce83495a..5f648307 100644 --- a/src/main/java/com/webank/wecross/stub/bcos/common/BCOSConstant.java +++ b/src/main/java/com/webank/wecross/stub/bcos/common/BCOSConstant.java @@ -19,6 +19,7 @@ public interface BCOSConstant { String BCOS_NODE_VERSION = "BCOS_PROPERTY_NODE_VERSION"; String BCOS_SEALER_LIST = "VERIFIER"; + int BCOS_NODE_ID_LENGTH = 128; String BCOS_PROXY_ABI = "WeCrossProxyABI"; String BCOS_PROXY_NAME = StubConstant.PROXY_NAME; diff --git a/src/main/java/com/webank/wecross/stub/bcos/config/BCOSStubConfig.java b/src/main/java/com/webank/wecross/stub/bcos/config/BCOSStubConfig.java index 169163a5..6b8a9e3f 100644 --- a/src/main/java/com/webank/wecross/stub/bcos/config/BCOSStubConfig.java +++ b/src/main/java/com/webank/wecross/stub/bcos/config/BCOSStubConfig.java @@ -51,6 +51,7 @@ public static class ChannelService { private String sslCert; private String sslKey; private boolean gmConnectEnable; + private String gmCaCert; private String gmSslCert; private String gmSslKey; diff --git a/src/main/java/com/webank/wecross/stub/bcos/verify/BlockHeaderValidation.java b/src/main/java/com/webank/wecross/stub/bcos/verify/BlockHeaderValidation.java index c1ed619f..37d3d1cb 100644 --- a/src/main/java/com/webank/wecross/stub/bcos/verify/BlockHeaderValidation.java +++ b/src/main/java/com/webank/wecross/stub/bcos/verify/BlockHeaderValidation.java @@ -6,6 +6,7 @@ import com.webank.wecross.exception.WeCrossException; import com.webank.wecross.stub.ObjectMapperFactory; import com.webank.wecross.stub.bcos.common.BCOSBlockHeader; +import com.webank.wecross.stub.bcos.common.BCOSConstant; import com.webank.wecross.stub.bcos.uaproof.Signer; import java.util.HashSet; import java.util.List; @@ -34,6 +35,7 @@ public static void verifyBlockHeader( + " actual stubType: " + stubType); } + List sealerList = getPubKeyInBCOSVerifier(blockVerifierString); List signatureList = bcosBlockHeader.getSignatureList(); @@ -133,7 +135,23 @@ private static List getPubKeyInBCOSVerifier(String blockVerifierString) Map bcosVerifierMapper = objectMapper.readValue( blockVerifierString, new TypeReference>() {}); - return (List) bcosVerifierMapper.get("pubKey"); + List pubKey = (List) bcosVerifierMapper.get("pubKey"); + if (pubKey == null) { + throw new WeCrossException( + WeCrossException.ErrorCode.UNEXPECTED_CONFIG, + "pubKey is null in BCOS Verifier."); + } + for (String key : pubKey) { + if (key.length() != BCOSConstant.BCOS_NODE_ID_LENGTH) { + throw new WeCrossException( + WeCrossException.ErrorCode.UNEXPECTED_CONFIG, + "pubKey length is not in conformity with the BCOS right way, pubKey: " + + key + + " length is " + + key.length()); + } + } + return pubKey; } catch (JsonProcessingException e) { throw new WeCrossException( WeCrossException.ErrorCode.UNEXPECTED_CONFIG, diff --git a/src/test/java/com/webank/wecross/stub/bcos/BCOSDriverTest.java b/src/test/java/com/webank/wecross/stub/bcos/BCOSDriverTest.java index 4eecac43..5cc639fd 100644 --- a/src/test/java/com/webank/wecross/stub/bcos/BCOSDriverTest.java +++ b/src/test/java/com/webank/wecross/stub/bcos/BCOSDriverTest.java @@ -86,6 +86,7 @@ public void initializer() throws Exception { + "\"78a313b426c3de3267d72b53c044fa9fe70c2a27a00af7fea4a549a7d65210ed90512fc92b6194c14766366d434235c794289d66deff0796f15228e0e14a9191\"," + "\"95b7ff064f91de76598f90bc059bec1834f0d9eeb0d05e1086d49af1f9c2f321062d011ee8b0df7644bd54c4f9ca3d8515a3129bbb9d0df8287c9fa69552887e\"," + "\"b8acb51b9fe84f88d670646be36f31c52e67544ce56faf3dc8ea4cf1b0ebff0864c6b218fdcd9cf9891ebd414a995847911bd26a770f429300085f37e1131f36\"]}"); + connection.getProperties().put(BCOSConstant.BCOS_STUB_TYPE, "BCOS2.0"); exceptionConnection = BCOSConnectionFactory.build(bcosStubConfig, new Web3jWrapperWithExceptionMock());