From f41a9fcc728b505d90c707a5ca55d5caacfd9553 Mon Sep 17 00:00:00 2001 From: CodingCattwo <847701726@qq.com> Date: Tue, 2 Aug 2022 17:13:54 +0800 Subject: [PATCH 01/18] fit in rc4 sdk --- Changelog.md | 17 + build.gradle | 2 +- .../webase/front/base/code/ConstantCode.java | 1 + .../front/base/config/CryptoConfig.java | 4 +- .../webase/front/base/config/Web3Config.java | 15 +- .../base/exception/ExceptionsHandler.java | 2 +- .../webase/front/configapi/ConfigService.java | 10 +- .../webase/front/contract/CommonContract.java | 14 +- .../front/contract/ContractService.java | 52 +-- .../front/contract/LiquidCompileService.java | 13 +- .../front/contract/entity/ReqDeploy.java | 3 +- .../front/contract/entity/ReqRegisterCns.java | 5 +- .../front/contract/entity/ReqSendAbi.java | 6 +- .../webase/front/event/EventService.java | 44 ++- .../event/callback/ContractEventCallback.java | 14 +- .../event/callback/SyncEventLogCallback.java | 14 +- .../front/event/entity/DecodedEventLog.java | 2 +- .../front/event/entity/RspEventLog.java | 2 +- .../entity/message/EventLogPushMessage.java | 2 +- .../front/keystore/KeyStoreService.java | 20 +- .../webase/front/method/MethodService.java | 8 +- .../webase/front/monitor/MonitorService.java | 8 +- .../authmanager/admin/AdminController.java | 2 +- .../authmanager/admin/AdminService.java | 42 +-- .../base/AuthMgrBaseController.java | 2 +- .../authmanager/base/AuthMgrBaseService.java | 2 +- .../committee/CommitteeController.java | 16 +- .../committee/CommitteeService.java | 68 ++-- .../everyone/EveryoneController.java | 2 +- .../authmanager/everyone/EveryoneService.java | 12 +- .../authmanager/util/AuthManagerService.java | 4 +- .../base/PrecompiledCommonInfo.java | 35 +- ...ompiledUtil.java => PrecompiledUtils.java} | 38 +- .../precompiled/bfs/BFSController.java | 6 +- .../precompiled/bfs/BFSServiceInWebase.java | 63 +++- .../precompiled/cns/CNSController.java | 2 +- .../precompiled/cns/CNSServiceInWebase.java | 81 ++--- .../consensus/ConsensusServiceInWebase.java | 41 +-- .../precompiled/crud/KVTableController.java | 122 +++---- .../crud/KVTableServiceInWebase.java | 330 +++++++++--------- .../sysconf/SysConfigServiceInWebase.java | 38 +- .../webase/front/task/SyncEventMapTask.java | 4 +- .../webase/front/tool/ToolController.java | 30 +- .../webase/front/tool/entity/RspKeyPair.java | 2 +- .../webase/front/tool/entity/RspSignData.java | 2 +- .../front/transaction/TransController.java | 6 +- .../front/transaction/TransService.java | 185 ++++++---- .../transaction/entity/ContractFunction.java | 4 +- .../webank/webase/front/util/AbiTypes.java | 8 +- .../webank/webase/front/util/CommonUtils.java | 18 +- .../webase/front/util/ContractAbiUtil.java | 16 +- .../webase/front/util/ContractTypeUtil.java | 38 +- .../webase/front/util/PrecompiledUtils.java | 9 +- .../webase/front/util/RabbitMQUtils.java | 8 +- .../front/util/StaticArrayReference.java | 142 ++++---- .../front/web3api/Web3ApiController.java | 20 +- .../webase/front/web3api/Web3ApiService.java | 38 +- .../front/web3api/entity/TransactionInfo.java | 2 +- .../webank/webase/front/base/BasicTest.java | 6 +- .../webank/webase/front/base/TestBase.java | 14 +- .../front/contract/WasmServiceTest.java | 2 +- .../gm/pressure/PerformanceCollector.java | 2 +- .../PerformanceHelloWorldCallback.java | 4 +- .../front/keystore/KeyStoreFileTest.java | 14 +- .../front/keystore/SignDataTestBase.java | 10 +- .../webase/front/monitor/ScheduledTest.java | 8 +- .../front/precntauth/CnsServiceTest.java | 21 +- .../precntauth/ConsensusServiceTest.java | 4 +- .../front/precntauth/CrudServiceTest.java | 12 +- .../PrecompiledSysConfigServiceTest.java | 2 +- .../front/util/ContractAbiUtilTest.java | 22 +- .../front/util/TransactionEncoderTest.java | 10 +- .../webase/front/web3j/SolidityTypeTest.java | 2 +- .../webase/front/web3j/Web3jApITest.java | 32 +- src/test/resources/applicationContext.xml | 40 --- 75 files changed, 978 insertions(+), 923 deletions(-) rename src/main/java/com/webank/webase/front/precntauth/precompiled/base/{PrecompiledUtil.java => PrecompiledUtils.java} (60%) delete mode 100644 src/test/resources/applicationContext.xml diff --git a/Changelog.md b/Changelog.md index ed577029a..1d122d865 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,4 +1,21 @@ +### 3.0.0(2022-08-02) + +**Add** +- 支持FISCO BCOS v3.0.0 +- 支持solidity v0.8.11 + +**Fix** +- 支持基于BFS的CNS + +**兼容性** +- 支持FISCO-BCOS v3.0.0 及以上版本 +- WeBASE-Node-Manager 3.0.0 +- WeBASE-Sign 3.0.0 + +详细了解,请阅读[**技术文档**](https://webasedoc.readthedocs.io/zh_CN/lab/)。 + + ### lab-rc2(2022-05-07) **Add** diff --git a/build.gradle b/build.gradle index 404d43fa1..8f6da9360 100644 --- a/build.gradle +++ b/build.gradle @@ -99,7 +99,7 @@ List scaffold = [ dependencies { compile spring,spring_boot,swagger,logger,jaxb,jackson,tomcat,scaffold - compile ('org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:3.0.0-rc2-bugfix-SNAPSHOT') + compile ('org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:3.0.0-rc4') // cover compile 'javax.servlet:javax.servlet-api:4.0.1' // support guomi/ecdsa same time, support solcJ-0.5.2 diff --git a/src/main/java/com/webank/webase/front/base/code/ConstantCode.java b/src/main/java/com/webank/webase/front/base/code/ConstantCode.java index 4d46a04fe..e4b41a1b6 100644 --- a/src/main/java/com/webank/webase/front/base/code/ConstantCode.java +++ b/src/main/java/com/webank/webase/front/base/code/ConstantCode.java @@ -280,6 +280,7 @@ public class ConstantCode { public static final RetCode LIQUID_READ_ABI_BIN_FAILED = RetCode.mark(201640, "Read liquid contract's abi and bin file failed, please check 'liquid' directory in webase-front"); public static final RetCode BUILD_NEW_EVENT_SUBSCRIBE_FAILED = RetCode.mark(201665, "Build eventSubscribe instance of new group failed"); + public static final RetCode ENCODE_TX_JNI_ERROR = RetCode.mark(201666, "Encode transaction in jni failed"); /* permission */ public static final RetCode EXEC_ENV_IS_WASM = RetCode.mark(201670, "exec env is wasm, don't support"); diff --git a/src/main/java/com/webank/webase/front/base/config/CryptoConfig.java b/src/main/java/com/webank/webase/front/base/config/CryptoConfig.java index c8b218595..8b9f02b53 100644 --- a/src/main/java/com/webank/webase/front/base/config/CryptoConfig.java +++ b/src/main/java/com/webank/webase/front/base/config/CryptoConfig.java @@ -16,8 +16,8 @@ package com.webank.webase.front.base.config; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.model.CryptoType; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.model.CryptoType; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/com/webank/webase/front/base/config/Web3Config.java b/src/main/java/com/webank/webase/front/base/config/Web3Config.java index b1c0f43af..6409a1267 100644 --- a/src/main/java/com/webank/webase/front/base/config/Web3Config.java +++ b/src/main/java/com/webank/webase/front/base/config/Web3Config.java @@ -13,22 +13,19 @@ */ package com.webank.webase.front.base.config; - -import com.webank.webase.front.configapi.ConfigService; import com.webank.webase.front.util.JsonUtils; import java.util.HashMap; import java.util.List; import java.util.Map; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.BcosSDK; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.config.ConfigOption; -import org.fisco.bcos.sdk.config.exceptions.ConfigException; -import org.fisco.bcos.sdk.config.model.ConfigProperty; -import org.fisco.bcos.sdk.eventsub.EventSubscribe; import org.fisco.bcos.sdk.jni.common.JniException; -import org.springframework.beans.factory.annotation.Autowired; +import org.fisco.bcos.sdk.v3.BcosSDK; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.config.ConfigOption; +import org.fisco.bcos.sdk.v3.config.exceptions.ConfigException; +import org.fisco.bcos.sdk.v3.config.model.ConfigProperty; +import org.fisco.bcos.sdk.v3.eventsub.EventSubscribe; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/src/main/java/com/webank/webase/front/base/exception/ExceptionsHandler.java b/src/main/java/com/webank/webase/front/base/exception/ExceptionsHandler.java index 89c5cf16e..c10faf362 100644 --- a/src/main/java/com/webank/webase/front/base/exception/ExceptionsHandler.java +++ b/src/main/java/com/webank/webase/front/base/exception/ExceptionsHandler.java @@ -23,7 +23,7 @@ import java.util.HashMap; import java.util.Map; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.TypeMismatchException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/com/webank/webase/front/configapi/ConfigService.java b/src/main/java/com/webank/webase/front/configapi/ConfigService.java index b77047b0f..5dc3a4c38 100644 --- a/src/main/java/com/webank/webase/front/configapi/ConfigService.java +++ b/src/main/java/com/webank/webase/front/configapi/ConfigService.java @@ -38,11 +38,11 @@ import java.util.Optional; import java.util.Stack; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.BcosSDK; -import org.fisco.bcos.sdk.config.ConfigOption; -import org.fisco.bcos.sdk.config.model.CryptoMaterialConfig; -import org.fisco.bcos.sdk.config.model.NetworkConfig; -import org.fisco.bcos.sdk.config.model.ThreadPoolConfig; +import org.fisco.bcos.sdk.v3.BcosSDK; +import org.fisco.bcos.sdk.v3.config.ConfigOption; +import org.fisco.bcos.sdk.v3.config.model.CryptoMaterialConfig; +import org.fisco.bcos.sdk.v3.config.model.NetworkConfig; +import org.fisco.bcos.sdk.v3.config.model.ThreadPoolConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/webank/webase/front/contract/CommonContract.java b/src/main/java/com/webank/webase/front/contract/CommonContract.java index 23379a7cf..1ffc9bba7 100644 --- a/src/main/java/com/webank/webase/front/contract/CommonContract.java +++ b/src/main/java/com/webank/webase/front/contract/CommonContract.java @@ -16,13 +16,13 @@ package com.webank.webase.front.contract; import java.util.List; -import org.fisco.bcos.sdk.codec.datatypes.Function; -import org.fisco.bcos.sdk.codec.datatypes.Type; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.contract.Contract; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.codec.datatypes.Function; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.contract.Contract; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; /** diff --git a/src/main/java/com/webank/webase/front/contract/ContractService.java b/src/main/java/com/webank/webase/front/contract/ContractService.java index 35449798b..e0aa83346 100644 --- a/src/main/java/com/webank/webase/front/contract/ContractService.java +++ b/src/main/java/com/webank/webase/front/contract/ContractService.java @@ -74,23 +74,23 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.codec.ABICodec; -import org.fisco.bcos.sdk.codec.ABICodecException; -import org.fisco.bcos.sdk.codec.datatypes.Address; -import org.fisco.bcos.sdk.codec.datatypes.generated.tuples.generated.Tuple2; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; -import org.fisco.bcos.sdk.codegen.ContractGenerator; -import org.fisco.bcos.sdk.codegen.exceptions.CodeGenException; -import org.fisco.bcos.sdk.contract.precompiled.cns.CnsService; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -import org.fisco.bcos.sdk.model.CryptoType; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.manager.AssembleTransactionProcessor; -import org.fisco.bcos.sdk.transaction.manager.TransactionProcessorFactory; -import org.fisco.bcos.sdk.transaction.model.dto.TransactionResponse; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.ContractCodec; +import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition; +import org.fisco.bcos.sdk.v3.codegen.ContractGenerator; +import org.fisco.bcos.sdk.v3.codegen.exceptions.CodeGenException; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSService; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.manager.AssembleTransactionProcessor; +import org.fisco.bcos.sdk.v3.transaction.manager.TransactionProcessorFactory; +import org.fisco.bcos.sdk.v3.transaction.model.dto.TransactionResponse; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.fisco.solc.compiler.CompilationResult; import org.fisco.solc.compiler.SolidityCompiler; import org.springframework.beans.BeanUtils; @@ -270,11 +270,11 @@ public String deployWithSign(ReqDeploy req) { throw new FrontException(ConstantCode.GROUP_SOL_WASM_NOT_MATCH); } - ABICodec abiCodec = new ABICodec(web3ApiService.getCryptoSuite(groupId), isWasm); + ContractCodec abiCodec = new ContractCodec(web3ApiService.getCryptoSuite(groupId), isWasm); byte[] encodedConstructor; try { encodedConstructor = abiCodec.encodeConstructor(abiStr, bytecodeBin, params); - } catch (ABICodecException e) { + } catch (ContractCodecException e) { log.error("deployWithSign encode fail:[]", e); throw new FrontException(ConstantCode.CONTRACT_TYPE_ENCODED_ERROR); } @@ -337,17 +337,17 @@ public String deployLocally(ReqDeploy req) { try { contractAddress = deployContract(client, abiStr, bytecodeBin, req.getContractAddress(), paramStrList, cryptoKeyPair); - } catch (ABICodecException e) { + } catch (ContractCodecException e) { log.error("deployLocally encode fail:[]", e); throw new FrontException(ConstantCode.CONTRACT_TYPE_ENCODED_ERROR); } } else { - ABICodec abiCodec = new ABICodec(web3ApiService.getCryptoSuite(groupId), + ContractCodec abiCodec = new ContractCodec(web3ApiService.getCryptoSuite(groupId), req.getIsWasm()); byte[] encodedConstructor; try { encodedConstructor = abiCodec.encodeConstructor(abiStr, bytecodeBin, params); - } catch (ABICodecException e) { + } catch (ContractCodecException e) { log.error("deployLocally encode fail:[]", e); throw new FrontException(ConstantCode.CONTRACT_TYPE_ENCODED_ERROR); } @@ -376,10 +376,10 @@ public void registerCns(ReqRegisterCns req) throws Exception { private void registerCnsByFrontDirectly(ReqRegisterCns req, String abiInfo) throws Exception { - CnsService cnsService = new CnsService(web3ApiService.getWeb3j(req.getGroupId()), + BFSService cnsService = new BFSService(web3ApiService.getWeb3j(req.getGroupId()), keyStoreService.getCredentials(req.getUserAddress(), req.getGroupId())); - RetCode retCode = cnsService.registerCNS(req.getCnsName(), req.getVersion(), + RetCode retCode = cnsService.link(req.getCnsName(), req.getVersion(), req.getContractAddress(), abiInfo); log.info("registerCNS and retCode is: {}, errorMsg is: {} " + retCode.getCode(), retCode.getMessage()); @@ -456,10 +456,10 @@ private String deployContract(Client client, byte[] encodedConstructor, * @param params * @param cryptoKeyPair * @return - * @throws ABICodecException + * @throws ContractCodecException */ private String deployContract(Client client, String abi, String binStr, String path, - List params, CryptoKeyPair cryptoKeyPair) throws ABICodecException { + List params, CryptoKeyPair cryptoKeyPair) throws ContractCodecException { AssembleTransactionProcessor assembleTxProcessor = null; try { assembleTxProcessor = TransactionProcessorFactory diff --git a/src/main/java/com/webank/webase/front/contract/LiquidCompileService.java b/src/main/java/com/webank/webase/front/contract/LiquidCompileService.java index 885f097b2..5bd3db8bc 100644 --- a/src/main/java/com/webank/webase/front/contract/LiquidCompileService.java +++ b/src/main/java/com/webank/webase/front/contract/LiquidCompileService.java @@ -21,16 +21,15 @@ import com.webank.webase.front.util.CommonUtils; import com.webank.webase.front.util.cmd.ExecuteResult; import com.webank.webase.front.util.cmd.JavaCommandExecutor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.io.FileUtils; -import org.fisco.bcos.sdk.utils.Hex; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Paths; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FileUtils; +import org.fisco.bcos.sdk.v3.utils.Numeric; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; /** * use command line to compile liquid contract and return abi & bin @@ -191,7 +190,7 @@ public AbiBinInfo compileAndReturn(String groupId, String contractPath, File binFile = new File(wasmBinPath); try { byte[] bin = CommonUtils.readBytes(binFile); - String binStr = Hex.toHexString(bin); + String binStr = Numeric.toHexString(bin); String abi = FileUtils.readFileToString(abiFile); AbiBinInfo abiBinInfo = new AbiBinInfo(abi, binStr); log.info("compileAndReturn abiBin:{}", abiBinInfo); diff --git a/src/main/java/com/webank/webase/front/contract/entity/ReqDeploy.java b/src/main/java/com/webank/webase/front/contract/entity/ReqDeploy.java index 8e2cf5985..a00b63ce7 100644 --- a/src/main/java/com/webank/webase/front/contract/entity/ReqDeploy.java +++ b/src/main/java/com/webank/webase/front/contract/entity/ReqDeploy.java @@ -18,10 +18,9 @@ import com.webank.webase.front.base.code.ConstantCode; import java.util.ArrayList; import java.util.List; -import lombok.Data; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; +import lombok.Data; /** * deploy interface parameter. diff --git a/src/main/java/com/webank/webase/front/contract/entity/ReqRegisterCns.java b/src/main/java/com/webank/webase/front/contract/entity/ReqRegisterCns.java index 8375aa0a0..c13dfa2de 100644 --- a/src/main/java/com/webank/webase/front/contract/entity/ReqRegisterCns.java +++ b/src/main/java/com/webank/webase/front/contract/entity/ReqRegisterCns.java @@ -17,11 +17,10 @@ import com.webank.webase.front.base.code.ConstantCode; import java.util.List; -import javax.validation.constraints.NotNull; -import lombok.Data; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import lombok.Data; /** * ReqRegisterCns. diff --git a/src/main/java/com/webank/webase/front/contract/entity/ReqSendAbi.java b/src/main/java/com/webank/webase/front/contract/entity/ReqSendAbi.java index 04a70c437..cb95d78b7 100644 --- a/src/main/java/com/webank/webase/front/contract/entity/ReqSendAbi.java +++ b/src/main/java/com/webank/webase/front/contract/entity/ReqSendAbi.java @@ -15,9 +15,9 @@ import com.webank.webase.front.base.code.ConstantCode; import java.util.List; -import lombok.Data; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; import javax.validation.constraints.NotEmpty; +import lombok.Data; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition; /** @@ -27,8 +27,6 @@ public class ReqSendAbi { private String groupId; private String contractName; - // @NotBlank(message = ConstantCode.PARAM_FAIL_VERSION_IS_EMPTY) - // private String version; private String address; @NotEmpty(message = ConstantCode.PARAM_FAIL_ABIINFO_IS_EMPTY) private List abiInfo; diff --git a/src/main/java/com/webank/webase/front/event/EventService.java b/src/main/java/com/webank/webase/front/event/EventService.java index de1e0e30c..aec5a23da 100644 --- a/src/main/java/com/webank/webase/front/event/EventService.java +++ b/src/main/java/com/webank/webase/front/event/EventService.java @@ -16,6 +16,11 @@ package com.webank.webase.front.event; +import static com.webank.webase.front.util.RabbitMQUtils.BLOCK_ROUTING_KEY_MAP; +import static com.webank.webase.front.util.RabbitMQUtils.CONTRACT_EVENT_CALLBACK_MAP; +import static com.webank.webase.front.util.RabbitMQUtils.ROUTING_KEY_BLOCK; +import static com.webank.webase.front.util.RabbitMQUtils.ROUTING_KEY_EVENT; + import com.webank.webase.front.abi.AbiService; import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.config.Web3Config; @@ -28,31 +33,34 @@ import com.webank.webase.front.event.callback.ContractEventCallback; import com.webank.webase.front.event.callback.NewBlockEventCallback; import com.webank.webase.front.event.callback.SyncEventLogCallback; -import com.webank.webase.front.event.entity.*; +import com.webank.webase.front.event.entity.ContractEventInfo; +import com.webank.webase.front.event.entity.DecodedEventLog; +import com.webank.webase.front.event.entity.EventTopicParam; +import com.webank.webase.front.event.entity.NewBlockEventInfo; +import com.webank.webase.front.event.entity.PublisherHelper; +import com.webank.webase.front.event.entity.RspContractInfo; import com.webank.webase.front.util.FrontUtils; import com.webank.webase.front.util.RabbitMQUtils; import com.webank.webase.front.web3api.Web3ApiService; -import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.BcosSDK; -import org.fisco.bcos.sdk.codec.ABICodec; -import org.fisco.bcos.sdk.config.exceptions.ConfigException; -import org.fisco.bcos.sdk.eventsub.EventSubParams; -import org.fisco.bcos.sdk.eventsub.EventSubscribe; -import org.fisco.bcos.sdk.jni.common.JniException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - import java.io.IOException; import java.time.LocalDateTime; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; - -import static com.webank.webase.front.util.RabbitMQUtils.*; +import lombok.extern.slf4j.Slf4j; +import org.fisco.bcos.sdk.v3.BcosSDK; +import org.fisco.bcos.sdk.v3.codec.ContractCodec; +import org.fisco.bcos.sdk.v3.eventsub.EventSubParams; +import org.fisco.bcos.sdk.v3.eventsub.EventSubscribe; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * event notify in message queue service @@ -165,7 +173,7 @@ public void handleRegContract(String appId, String groupId, String exchangeName, EventSubParams params = RabbitMQUtils.initSingleEventLogUserParams(fromBlock, toBlock, contractAddress, topicList, web3ApiService.getWeb3j(groupId).getCryptoSuite()); ContractEventCallback callback = new ContractEventCallback(mqPublisher, exchangeName, routingKey, groupId, appId, - new ABICodec(web3ApiService.getCryptoSuite(groupId), false), abi, topicList); + new ContractCodec(web3ApiService.getCryptoSuite(groupId), false), abi, topicList); // register registerId = eventSubscribe.subscribeEvent(params, callback); // save to db first @@ -399,7 +407,7 @@ public List getContractEventLog(String groupId, String contract log.info("getContractEventLog eventParam:{}", eventParam); // final CompletableFuture> callbackFuture = new CompletableFuture<>(); final CompletableFuture> callbackFuture = new CompletableFuture<>(); - ABICodec abiCodec = new ABICodec(web3ApiService.getCryptoSuite(groupId), false); + ContractCodec abiCodec = new ContractCodec(web3ApiService.getCryptoSuite(groupId), false); SyncEventLogCallback callback = new SyncEventLogCallback(abiCodec, abi, eventTopicParam.getEventName().split("\\(")[0], callbackFuture); EventSubscribe eventSubscribe = this.getEventSubscribe(String.valueOf(groupId)); diff --git a/src/main/java/com/webank/webase/front/event/callback/ContractEventCallback.java b/src/main/java/com/webank/webase/front/event/callback/ContractEventCallback.java index 4a20d503e..4cd089abe 100644 --- a/src/main/java/com/webank/webase/front/event/callback/ContractEventCallback.java +++ b/src/main/java/com/webank/webase/front/event/callback/ContractEventCallback.java @@ -22,10 +22,10 @@ import java.util.ArrayList; import java.util.List; import lombok.Data; -import org.fisco.bcos.sdk.codec.ABICodec; -import org.fisco.bcos.sdk.codec.ABICodecException; -import org.fisco.bcos.sdk.eventsub.EventSubCallback; -import org.fisco.bcos.sdk.model.EventLog; +import org.fisco.bcos.sdk.v3.codec.ContractCodec; +import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +import org.fisco.bcos.sdk.v3.eventsub.EventSubCallback; +import org.fisco.bcos.sdk.v3.model.EventLog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,13 +46,13 @@ public class ContractEventCallback implements EventSubCallback { private String routingKey; private String groupId; private String appId; - private ABICodec abiCodec; + private ContractCodec abiCodec; private String contractAbi; private List eventNameList; public ContractEventCallback(MQPublisher mqPublisher, String exchangeName, String routingKey, String groupId, String appId, - ABICodec abiCodec, String contractAbi, List eventNameList) { + ContractCodec abiCodec, String contractAbi, List eventNameList) { this.MQPublisher = mqPublisher; this.exchangeName = exchangeName; this.routingKey = routingKey; @@ -87,7 +87,7 @@ public void onReceiveLog(String eventSubId, int status, List logs) { // try { // List list = abiCodec.decodeEvent(contractAbi, eventName, log); // logger.debug("decode event of :{}, log content:{} ", eventName, list); -// } catch (ABICodecException e) { +// } catch (ContractCodecException e) { // logger.error("decode event log error:{} ", e.getMessage()); // } // } diff --git a/src/main/java/com/webank/webase/front/event/callback/SyncEventLogCallback.java b/src/main/java/com/webank/webase/front/event/callback/SyncEventLogCallback.java index f1580ed06..4286993bd 100644 --- a/src/main/java/com/webank/webase/front/event/callback/SyncEventLogCallback.java +++ b/src/main/java/com/webank/webase/front/event/callback/SyncEventLogCallback.java @@ -18,10 +18,10 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; -import org.fisco.bcos.sdk.codec.ABICodec; -import org.fisco.bcos.sdk.codec.ABICodecException; -import org.fisco.bcos.sdk.eventsub.EventSubCallback; -import org.fisco.bcos.sdk.model.EventLog; +import org.fisco.bcos.sdk.v3.codec.ContractCodec; +import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +import org.fisco.bcos.sdk.v3.eventsub.EventSubCallback; +import org.fisco.bcos.sdk.v3.model.EventLog; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,7 +33,7 @@ public class SyncEventLogCallback implements EventSubCallback { private static final Logger logger = LoggerFactory.getLogger(SyncEventLogCallback.class); - private ABICodec abiCodec; + private ContractCodec abiCodec; private String contractAbi; private String eventName; @@ -42,7 +42,7 @@ public class SyncEventLogCallback implements EventSubCallback { // private List finalList; private List finalList; - public SyncEventLogCallback(ABICodec abiCodec, String contractAbi, String eventName, + public SyncEventLogCallback(ContractCodec abiCodec, String contractAbi, String eventName, final CompletableFuture> future) { this.abiCodec = abiCodec; this.contractAbi = contractAbi; @@ -106,7 +106,7 @@ private List decodeEvent(List logs) { DecodedEventLog decodedEventLog = new DecodedEventLog(log, list); logger.debug("decode event of :{}, log content:{} ", eventName, list); decodedLogList.add(decodedEventLog); - } catch (ABICodecException e) { + } catch (ContractCodecException e) { logger.error("decode event log error:{} ", e.getMessage()); } } diff --git a/src/main/java/com/webank/webase/front/event/entity/DecodedEventLog.java b/src/main/java/com/webank/webase/front/event/entity/DecodedEventLog.java index dff2444b7..10a8a7129 100644 --- a/src/main/java/com/webank/webase/front/event/entity/DecodedEventLog.java +++ b/src/main/java/com/webank/webase/front/event/entity/DecodedEventLog.java @@ -17,7 +17,7 @@ import java.util.List; import lombok.AllArgsConstructor; import lombok.Data; -import org.fisco.bcos.sdk.model.EventLog; +import org.fisco.bcos.sdk.v3.model.EventLog; @Data @AllArgsConstructor diff --git a/src/main/java/com/webank/webase/front/event/entity/RspEventLog.java b/src/main/java/com/webank/webase/front/event/entity/RspEventLog.java index 9601ef63d..e854baf9a 100644 --- a/src/main/java/com/webank/webase/front/event/entity/RspEventLog.java +++ b/src/main/java/com/webank/webase/front/event/entity/RspEventLog.java @@ -17,7 +17,7 @@ import java.util.List; import lombok.AllArgsConstructor; import lombok.Data; -import org.fisco.bcos.sdk.model.EventLog; +import org.fisco.bcos.sdk.v3.model.EventLog; @Data @AllArgsConstructor diff --git a/src/main/java/com/webank/webase/front/event/entity/message/EventLogPushMessage.java b/src/main/java/com/webank/webase/front/event/entity/message/EventLogPushMessage.java index d871f7a8d..21be706e1 100644 --- a/src/main/java/com/webank/webase/front/event/entity/message/EventLogPushMessage.java +++ b/src/main/java/com/webank/webase/front/event/entity/message/EventLogPushMessage.java @@ -20,7 +20,7 @@ import java.util.List; import lombok.Data; import lombok.NoArgsConstructor; -import org.fisco.bcos.sdk.model.EventLog; +import org.fisco.bcos.sdk.v3.model.EventLog; /** * @author marsli diff --git a/src/main/java/com/webank/webase/front/keystore/KeyStoreService.java b/src/main/java/com/webank/webase/front/keystore/KeyStoreService.java index 27fbf6778..e2285e85f 100644 --- a/src/main/java/com/webank/webase/front/keystore/KeyStoreService.java +++ b/src/main/java/com/webank/webase/front/keystore/KeyStoreService.java @@ -48,16 +48,16 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.crypto.exceptions.LoadKeyStoreException; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -import org.fisco.bcos.sdk.crypto.keystore.KeyTool; -import org.fisco.bcos.sdk.crypto.keystore.P12KeyStore; -import org.fisco.bcos.sdk.crypto.keystore.PEMKeyStore; -import org.fisco.bcos.sdk.crypto.signature.ECDSASignatureResult; -import org.fisco.bcos.sdk.crypto.signature.SM2SignatureResult; -import org.fisco.bcos.sdk.model.CryptoType; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.exceptions.LoadKeyStoreException; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.crypto.keystore.KeyTool; +import org.fisco.bcos.sdk.v3.crypto.keystore.P12KeyStore; +import org.fisco.bcos.sdk.v3.crypto.keystore.PEMKeyStore; +import org.fisco.bcos.sdk.v3.crypto.signature.ECDSASignatureResult; +import org.fisco.bcos.sdk.v3.crypto.signature.SM2SignatureResult; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.utils.Numeric; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.Sort; diff --git a/src/main/java/com/webank/webase/front/method/MethodService.java b/src/main/java/com/webank/webase/front/method/MethodService.java index e6310f544..5e1afa5f4 100644 --- a/src/main/java/com/webank/webase/front/method/MethodService.java +++ b/src/main/java/com/webank/webase/front/method/MethodService.java @@ -28,10 +28,10 @@ import java.util.List; import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.utils.Numeric; -import org.fisco.bcos.sdk.utils.ObjectMapperFactory; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.utils.Numeric; +import org.fisco.bcos.sdk.v3.utils.ObjectMapperFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/webank/webase/front/monitor/MonitorService.java b/src/main/java/com/webank/webase/front/monitor/MonitorService.java index 943606e91..0a062c109 100644 --- a/src/main/java/com/webank/webase/front/monitor/MonitorService.java +++ b/src/main/java/com/webank/webase/front/monitor/MonitorService.java @@ -30,10 +30,10 @@ import java.util.concurrent.ExecutionException; import javax.persistence.criteria.Predicate; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.client.protocol.response.BlockNumber; -import org.fisco.bcos.sdk.client.protocol.response.PbftView; -import org.fisco.bcos.sdk.client.protocol.response.PendingTxSize; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.client.protocol.response.BlockNumber; +import org.fisco.bcos.sdk.v3.client.protocol.response.PbftView; +import org.fisco.bcos.sdk.v3.client.protocol.response.PendingTxSize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminController.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminController.java index f90d867a8..d312c4f73 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminController.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminController.java @@ -21,7 +21,7 @@ import java.math.BigInteger; import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java index bca53536a..a85d50fa8 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java @@ -13,14 +13,15 @@ */ package com.webank.webase.front.precntauth.authmanager.admin; -import static org.fisco.bcos.sdk.contract.auth.contracts.ContractAuthPrecompiled.FUNC_CLOSEMETHODAUTH; -import static org.fisco.bcos.sdk.contract.auth.contracts.ContractAuthPrecompiled.FUNC_OPENMETHODAUTH; -import static org.fisco.bcos.sdk.contract.auth.contracts.ContractAuthPrecompiled.FUNC_SETMETHODAUTHTYPE; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled.FUNC_CLOSEMETHODAUTH; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled.FUNC_OPENMETHODAUTH; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled.FUNC_SETMETHODAUTHTYPE; import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.enums.PrecompiledTypes; import com.webank.webase.front.base.exception.FrontException; import com.webank.webase.front.base.response.BaseResponse; import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; +import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtils; import com.webank.webase.front.transaction.TransService; import com.webank.webase.front.util.CommonUtils; import com.webank.webase.front.web3api.Web3ApiService; @@ -29,11 +30,11 @@ import java.util.Arrays; import java.util.List; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.contract.auth.contracts.ContractAuthPrecompiled; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.codec.decode.ReceiptParser; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.codec.decode.ReceiptParser; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -76,7 +77,7 @@ public Object setMethodAuthTypeHandle(String groupId, String signUserId, String TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_SETMETHODAUTHTYPE, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } @@ -111,10 +112,10 @@ public Object setMethodAuthHandle(String groupId, String signUserId, String cont (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_CLOSEMETHODAUTH, funcParams); } - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } - public String handleRetcodeAndReceipt(TransactionReceipt receipt) { + public String handleRetcodeAndReceipt(TransactionReceipt receipt, boolean isWasm) { if (receipt.getStatus() == 16) { RetCode sdkRetCode = new RetCode(); if (receipt.getMessage().equals("Proposal not exist")) { @@ -125,24 +126,7 @@ public String handleRetcodeAndReceipt(TransactionReceipt receipt) { sdkRetCode.getMessage()).toString(); } } - return this.handleTransactionReceipt(receipt); - } - - private String handleTransactionReceipt(TransactionReceipt receipt) { - log.debug("handle tx receipt of precompiled"); - try { - RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt(receipt); - log.info("handleTransactionReceipt sdkRetCode:{}", sdkRetCode); - if (sdkRetCode.getCode() >= 0) { - return new BaseResponse(ConstantCode.RET_SUCCESS, - sdkRetCode.getMessage()).toString(); - } else { - throw new FrontException(sdkRetCode.getCode(), sdkRetCode.getMessage()); - } - } catch (ContractException e) { - log.error("handleTransactionReceipt e:[]", e); - throw new FrontException(e.getErrorCode(), e.getMessage()); - } + return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); } } diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseController.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseController.java index 7a7e4fc19..931ce2135 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseController.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseController.java @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseService.java index 5df3f6ec9..625c4eec9 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseService.java @@ -2,7 +2,7 @@ import com.webank.webase.front.web3api.Web3ApiService; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.client.Client; +import org.fisco.bcos.sdk.v3.client.Client; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeController.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeController.java index a4f38b24c..86a193490 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeController.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeController.java @@ -13,9 +13,9 @@ import java.io.IOException; import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.codec.ABICodecException; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; -import org.fisco.bcos.sdk.transaction.model.exception.TransactionException; +import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.TransactionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -37,7 +37,7 @@ public class CommitteeController { , dataType = "ReqUpdateGovernorInfo") @PostMapping("governor") public Object updateGovernor(@Valid @RequestBody ReqUpdateGovernorInfo reqUpdateGovernorInfo) - throws ContractException, ABICodecException, TransactionException, IOException { + throws ContractException, ContractCodecException, TransactionException, IOException { return committeeService.updateGovernor(reqUpdateGovernorInfo.getGroupId(), reqUpdateGovernorInfo.getSignUserId(), reqUpdateGovernorInfo.getAccountAddress(), reqUpdateGovernorInfo.getWeight()); @@ -48,7 +48,7 @@ public Object updateGovernor(@Valid @RequestBody ReqUpdateGovernorInfo reqUpdate dataType = "ReqSetRateInfo") @PostMapping("rate") public Object setRate(@Valid @RequestBody ReqSetRateInfo reqSetRateInfo) - throws ContractException, ABICodecException, TransactionException, IOException { + throws ContractException, ContractCodecException, TransactionException, IOException { return committeeService.setRate(reqSetRateInfo.getGroupId(), reqSetRateInfo.getSignUserId(), reqSetRateInfo.getParticipatesRate(), reqSetRateInfo.getWinRate()); @@ -78,7 +78,7 @@ public Object modifyDeployAuth(@Valid @RequestBody ReqUsrDeployInfo reqUsrDeploy dataType = "ReqResetAdminInfo") @PostMapping("contract/admin") public Object resetAdmin(@Valid @RequestBody ReqResetAdminInfo reqResetAdminInfo) - throws ABICodecException, TransactionException, ContractException, IOException { + throws ContractCodecException, TransactionException, ContractException, IOException { return committeeService.resetAdmin(reqResetAdminInfo.getGroupId(), reqResetAdminInfo.getSignUserId(), reqResetAdminInfo.getNewAdmin(), reqResetAdminInfo.getContractAddr()); @@ -89,7 +89,7 @@ public Object resetAdmin(@Valid @RequestBody ReqResetAdminInfo reqResetAdminInfo dataType = "ReqRevokeProposalInfo") @PostMapping("proposal/revoke") public Object revokeProposal(@Valid @RequestBody ReqRevokeProposalInfo reqRevokeProposalInfo) - throws ABICodecException, TransactionException, ContractException, IOException { + throws ContractCodecException, TransactionException, ContractException, IOException { return committeeService.revokeProposal(reqRevokeProposalInfo.getGroupId(), reqRevokeProposalInfo.getSignUserId(), reqRevokeProposalInfo.getProposalId()); } @@ -99,7 +99,7 @@ public Object revokeProposal(@Valid @RequestBody ReqRevokeProposalInfo reqRevoke dataType = "ReqVoteProposalInfo") @PostMapping("proposal/vote") public Object voteProposal(@Valid @RequestBody ReqVoteProposalInfo reqVoteProposalInfo) - throws ABICodecException, TransactionException, ContractException, IOException { + throws ContractCodecException, TransactionException, ContractException, IOException { return committeeService.voteProposal(reqVoteProposalInfo.getGroupId(), reqVoteProposalInfo.getSignUserId(), reqVoteProposalInfo.getProposalId(), reqVoteProposalInfo.getAgree()); diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeService.java index 8535a0b5b..fc4116078 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/committee/CommitteeService.java @@ -13,32 +13,33 @@ */ package com.webank.webase.front.precntauth.authmanager.committee; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_CREATEMODIFYDEPLOYAUTHPROPOSAL; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_CREATERESETADMINPROPOSAL; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_CREATESETDEPLOYAUTHTYPEPROPOSAL; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_CREATESETRATEPROPOSAL; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_CREATEUPDATEGOVERNORPROPOSAL; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_REVOKEPROPOSAL; -import static org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager.FUNC_VOTEPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_CREATEMODIFYDEPLOYAUTHPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_CREATERESETADMINPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_CREATESETDEPLOYAUTHTYPEPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_CREATESETRATEPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_CREATEUPDATEGOVERNORPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_REVOKEPROPOSAL; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager.FUNC_VOTEPROPOSAL; import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.enums.PrecompiledTypes; import com.webank.webase.front.base.exception.FrontException; import com.webank.webase.front.base.response.BaseResponse; import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; +import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtils; import com.webank.webase.front.transaction.TransService; import java.io.IOException; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.codec.ABICodecException; -import org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.codec.decode.ReceiptParser; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; -import org.fisco.bcos.sdk.transaction.model.exception.TransactionException; +import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +import org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.codec.decode.ReceiptParser; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.TransactionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -74,7 +75,7 @@ public Object updateGovernorHandle(String groupId, String signUserId, String acc TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_CREATEUPDATEGOVERNORPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } /** @@ -97,7 +98,7 @@ public Object setRateHandle(String groupId, String signUserId, BigInteger partic TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_CREATESETRATEPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } /** @@ -119,7 +120,7 @@ public String setDeployAuthTypeHandle(String groupId, String signUserId, (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_CREATESETDEPLOYAUTHTYPEPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } /** @@ -143,14 +144,14 @@ public Object modifyDeployAuthHandle(String groupId, String signUserId, String u (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_CREATEMODIFYDEPLOYAUTHPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } /** * 重置某个合约的管理员账号提案 */ public Object resetAdmin(String groupId, String signUserId, String newAdmin, String contractAddr) - throws ContractException, ABICodecException, TransactionException, IOException { + throws ContractException, ContractCodecException, TransactionException, IOException { return this.resetAdminHandle(groupId, signUserId, newAdmin, contractAddr); } @@ -167,14 +168,14 @@ public Object resetAdminHandle(String groupId, String signUserId, String newAdmi (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_CREATERESETADMINPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } /** * 撤销提案的发起,该操作只有发起提案的治理委员才能操作 */ public Object revokeProposal(String groupId, String signUserId, BigInteger proposalId) - throws ContractException, ABICodecException, TransactionException, IOException { + throws ContractException, ContractCodecException, TransactionException, IOException { return this.revokeProposalHandle(groupId, signUserId, proposalId); } @@ -188,7 +189,7 @@ public Object revokeProposalHandle(String groupId, String signUserId, BigInteger (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_REVOKEPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } /** @@ -212,10 +213,10 @@ public String voteProposalHandle(String groupId, String signUserId, BigInteger p (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_VOTEPROPOSAL, funcParams); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, false); } - public String handleRetcodeAndReceipt(TransactionReceipt receipt) { + public String handleRetcodeAndReceipt(TransactionReceipt receipt, boolean isWasm) { if (receipt.getStatus() == 16) { RetCode sdkRetCode = new RetCode(); if (receipt.getMessage().equals("Proposal not exist")) { @@ -252,24 +253,7 @@ public String handleRetcodeAndReceipt(TransactionReceipt receipt) { } } - return this.handleTransactionReceipt(receipt); - } - - private String handleTransactionReceipt(TransactionReceipt receipt) { - log.debug("handle tx receipt of precompiled"); - try { - RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt(receipt); - log.info("handleTransactionReceipt sdkRetCode:{}", sdkRetCode); - if (sdkRetCode.getCode() >= 0) { - return new BaseResponse(ConstantCode.RET_SUCCESS, - sdkRetCode.getMessage()).toString(); - } else { - throw new FrontException(sdkRetCode.getCode(), sdkRetCode.getMessage()); - } - } catch (ContractException e) { - log.error("handleTransactionReceipt e:[]", e); - throw new FrontException(e.getErrorCode(), e.getMessage()); - } + return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); } } diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java index f3b7f95f5..fdcb72925 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java @@ -12,7 +12,7 @@ import java.util.List; import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java index 4dcfacb0e..412160229 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java @@ -22,11 +22,11 @@ import java.util.LinkedList; import java.util.List; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.contract.auth.manager.AuthManager; -import org.fisco.bcos.sdk.contract.auth.po.ProposalInfo; -import org.fisco.bcos.sdk.contract.auth.po.ProposalStatus; -import org.fisco.bcos.sdk.contract.auth.po.ProposalType; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.contract.auth.manager.AuthManager; +import org.fisco.bcos.sdk.v3.contract.auth.po.ProposalInfo; +import org.fisco.bcos.sdk.v3.contract.auth.po.ProposalStatus; +import org.fisco.bcos.sdk.v3.contract.auth.po.ProposalType; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -93,7 +93,7 @@ public List handleProposalReturnData(AuthManager authManager, int startI info.setResourceId(proposalInfo.getResourceId()); info.setProposer(proposalInfo.getProposer()); info.setProposalType(ProposalType.fromInt(proposalInfo.getProposalType()).getValue()); - info.setBlockNumberInterval(proposalInfo.getBlockNumberInterval()); + info.setBlockNumberInterval(proposalInfo.getBlockNumberInterval().longValue()); info.setStatus(ProposalStatus.fromInt(proposalInfo.getStatus()).getValue()); info.setAgreeVoters(proposalInfo.getAgreeVoters()); info.setAgainstVoters(proposalInfo.getAgainstVoters()); diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/util/AuthManagerService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/util/AuthManagerService.java index b30e3ec7e..806547554 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/util/AuthManagerService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/util/AuthManagerService.java @@ -9,8 +9,8 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.contract.auth.manager.AuthManager; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.contract.auth.manager.AuthManager; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledCommonInfo.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledCommonInfo.java index 15fbe67a8..71a2e23ce 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledCommonInfo.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledCommonInfo.java @@ -18,14 +18,13 @@ import com.webank.webase.front.base.enums.PrecompiledTypes; -import org.fisco.bcos.sdk.contract.auth.contracts.CommitteeManager; -import org.fisco.bcos.sdk.contract.auth.contracts.ContractAuthPrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.bfs.BFSPrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.cns.CNSPrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.consensus.ConsensusPrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.crud.KVTablePrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.model.PrecompiledAddress; -import org.fisco.bcos.sdk.contract.precompiled.sysconfig.SystemConfigPrecompiled; +import org.fisco.bcos.sdk.v3.contract.auth.contracts.CommitteeManager; +import org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSPrecompiled; +import org.fisco.bcos.sdk.v3.contract.precompiled.consensus.ConsensusPrecompiled; +import org.fisco.bcos.sdk.v3.contract.precompiled.crud.KVTablePrecompiled; +import org.fisco.bcos.sdk.v3.contract.precompiled.model.PrecompiledAddress; +import org.fisco.bcos.sdk.v3.contract.precompiled.sysconfig.SystemConfigPrecompiled; /** * precompiled contract address, function name, abi @@ -41,18 +40,18 @@ public static String getAddress(PrecompiledTypes types) { return PrecompiledAddress.SYS_CONFIG_PRECOMPILED_ADDRESS; case SYSTEM_CONFIG_LIQUID: return PrecompiledAddress.SYS_CONFIG_PRECOMPILED_NAME; - case CRUD: - return PrecompiledAddress.KV_TABLE_PRECOMPILED_ADDRESS; - case CRUD_LIQUID: - return PrecompiledAddress.KV_TABLE_PRECOMPILED_NAME; +// case CRUD: +// return PrecompiledAddress.KV_TABLE_PRECOMPILED_ADDRESS; +// case CRUD_LIQUID: +// return PrecompiledAddress.KV_TABLE_PRECOMPILED_NAME; case CONSENSUS: return PrecompiledAddress.CONSENSUS_PRECOMPILED_ADDRESS; case CONSENSUS_LIQUID: return PrecompiledAddress.CONSENSUS_PRECOMPILED_NAME; - case CNS: - return PrecompiledAddress.CNS_PRECOMPILED_ADDRESS; - case CNS_LIQUID: - return PrecompiledAddress.CNS_PRECOMPILED_NAME; +// case CNS: +// return PrecompiledAddress.CNS_PRECOMPILED_ADDRESS; +// case CNS_LIQUID: +// return PrecompiledAddress.CNS_PRECOMPILED_NAME; case BFS: return PrecompiledAddress.BFS_PRECOMPILED_ADDRESS; case BFS_LIQUID: @@ -74,8 +73,8 @@ public static String getAbi(PrecompiledTypes types) { return KVTablePrecompiled.ABI; case CONSENSUS: return ConsensusPrecompiled.ABI; - case CNS: - return CNSPrecompiled.ABI; +// case CNS: +// return CNSPrecompiled.ABI; case CONTRACT_AUTH: return ContractAuthPrecompiled.ABI; case BFS: diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledUtil.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledUtils.java similarity index 60% rename from src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledUtil.java rename to src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledUtils.java index 9a8870340..b7131577f 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledUtil.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledUtils.java @@ -3,23 +3,45 @@ import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.exception.FrontException; import com.webank.webase.front.base.response.BaseResponse; +import java.math.BigInteger; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Stack; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.codec.datatypes.generated.tuples.generated.Tuple2; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.codec.decode.ReceiptParser; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.codec.FunctionReturnDecoderInterface; +import org.fisco.bcos.sdk.v3.codec.Utils; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.codec.decode.ReceiptParser; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; @Slf4j -public class PrecompiledUtil { +public class PrecompiledUtils { - public static String handleTransactionReceipt(TransactionReceipt receipt) { + + public static String handleTransactionReceipt(TransactionReceipt receipt, boolean isWasm) { log.debug("handle tx receipt of precompiled"); try { - RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt(receipt); + RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt( + receipt, + tr -> { + FunctionReturnDecoderInterface decoderInterface = + isWasm + ? new org.fisco.bcos.sdk.v3.codec.scale.FunctionReturnDecoder() + : new org.fisco.bcos.sdk.v3.codec.abi.FunctionReturnDecoder(); + List decode = + decoderInterface.decode( + tr.getOutput(), + Utils.convert( + Collections.singletonList( + new TypeReference() {}))); + return (BigInteger) decode.get(0).getValue(); + }); log.info("handleTransactionReceipt sdkRetCode:{}", sdkRetCode); if (sdkRetCode.getCode() >= 0) { return new BaseResponse(ConstantCode.RET_SUCCESS, diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSController.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSController.java index 00025327b..4275e1b1a 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSController.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSController.java @@ -9,9 +9,9 @@ import io.swagger.annotations.ApiOperation; import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSServiceInWebase.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSServiceInWebase.java index a44a700d8..a189e4bd3 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSServiceInWebase.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/bfs/BFSServiceInWebase.java @@ -18,18 +18,17 @@ import com.webank.webase.front.base.response.BaseResponse; import com.webank.webase.front.keystore.KeyStoreService; import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; -import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtil; +import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtils; import com.webank.webase.front.transaction.TransService; import com.webank.webase.front.web3api.Web3ApiService; import java.util.ArrayList; import java.util.List; -import java.util.Locale; -import org.fisco.bcos.sdk.contract.precompiled.bfs.BFSPrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.bfs.BFSService; -import org.fisco.bcos.sdk.contract.precompiled.bfs.FileInfo; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSPrecompiled; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSPrecompiled.BfsInfo; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSService; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -64,21 +63,59 @@ public Object mkdir(String groupId, String path, String signUserId) { TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, BFSPrecompiled.FUNC_MKDIR, funcParams, isWasm); - return this.handleRetcodeAndReceipt(receipt); + return this.handleRetcodeAndReceipt(receipt, isWasm); } /** * BFS获取某个目录信息 */ - public Object list(String groupId, String path) + public List list(String groupId, String path) throws ContractException { BFSService bfsService = new BFSService(web3ApiService.getWeb3j(groupId), keyStoreService.getCredentialsForQuery(groupId)); - List fileInfoList = bfsService.list(path); + List fileInfoList = bfsService.list(path); return fileInfoList; } - public String handleRetcodeAndReceipt(TransactionReceipt receipt) { + /** + * BFS link + */ + public String link(String groupId, String signUserId, String contractName, + String contractVersion, + String contractAddress, String abiData) { + List funcParams = new ArrayList<>(); + funcParams.add(contractName); + funcParams.add(contractVersion); + funcParams.add(contractAddress); + funcParams.add(abiData); + + String bfsAddress; + boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); + if (isWasm) { + bfsAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.BFS_LIQUID); + } else { + bfsAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.BFS); + } + String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.BFS); + TransactionReceipt receipt = + (TransactionReceipt) transService.transHandleWithSign(groupId, + signUserId, bfsAddress, abiStr, BFSPrecompiled.FUNC_LINK, funcParams, isWasm); + return this.handleRetcodeAndReceipt(receipt, isWasm); + } + + /** + * BFS readlink 获取某个目录信息 + */ + public Object readlink(String groupId, String path) + throws ContractException { + BFSService bfsService = new BFSService(web3ApiService.getWeb3j(groupId), + keyStoreService.getCredentialsForQuery(groupId)); + String readlink = bfsService.readlink(path); + return readlink; + } + + + public String handleRetcodeAndReceipt(TransactionReceipt receipt, boolean isWasm) { if (receipt.getStatus() == -53005) { RetCode sdkRetCode = new RetCode(); if (receipt.getMessage().equals("Invalid path")) { @@ -86,7 +123,7 @@ public String handleRetcodeAndReceipt(TransactionReceipt receipt) { sdkRetCode.getMessage()).toString(); } } - return PrecompiledUtil.handleTransactionReceipt(receipt); + return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); } } diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSController.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSController.java index e9ab16158..630ef59e1 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSController.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSController.java @@ -8,7 +8,7 @@ import io.swagger.annotations.ApiOperation; import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSServiceInWebase.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSServiceInWebase.java index 20dbf7198..04c70da16 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSServiceInWebase.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSServiceInWebase.java @@ -13,28 +13,27 @@ */ package com.webank.webase.front.precntauth.precompiled.cns; -import com.webank.webase.front.base.enums.PrecompiledTypes; import com.webank.webase.front.keystore.KeyStoreService; -import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; -import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtil; +import com.webank.webase.front.precntauth.precompiled.bfs.BFSServiceInWebase; import com.webank.webase.front.precntauth.precompiled.cns.entity.ResCnsInfo; import com.webank.webase.front.transaction.TransService; import com.webank.webase.front.web3api.Web3ApiService; -import java.util.ArrayList; import java.util.List; -import org.fisco.bcos.sdk.codec.datatypes.generated.tuples.generated.Tuple2; -import org.fisco.bcos.sdk.contract.precompiled.cns.CNSPrecompiled; -import org.fisco.bcos.sdk.contract.precompiled.cns.CnsInfo; -import org.fisco.bcos.sdk.contract.precompiled.cns.CnsService; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import java.util.stream.Collectors; +import lombok.extern.slf4j.Slf4j; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSPrecompiled.BfsInfo; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * CNS management service; * Handle transaction through webase-sign. + * 2022-08-02: use BfsService instead of CNSService in sdk */ +@Slf4j @Service public class CNSServiceInWebase { @@ -44,53 +43,50 @@ public class CNSServiceInWebase { private KeyStoreService keyStoreService; @Autowired private TransService transService; + @Autowired + private BFSServiceInWebase bfsServiceInWebase; + + private static final String CONTRACT_PREFIX = "/apps/"; + private static final String CNS_FILE_TYPE = "link"; - public Object registerCNS(String groupId, String signUserId, String contractName, + public String registerCNS(String groupId, String signUserId, String contractName, String contractVersion, String contractAddress, String abiData) throws ContractException { TransactionReceipt receipt; - String precompiledAddress; - List funcParams = new ArrayList<>(); - funcParams.add(contractName); - funcParams.add(contractVersion); - funcParams.add(contractAddress); - funcParams.add(abiData); - //wasm or solidity - boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); - if (isWasm) { - precompiledAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CNS_LIQUID); - } else { - precompiledAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CNS); - } - String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CNS); - receipt = - (TransactionReceipt) transService.transHandleWithSign(groupId, - signUserId, precompiledAddress, abiStr, CNSPrecompiled.FUNC_INSERT, funcParams, - isWasm); - return PrecompiledUtil.handleTransactionReceipt(receipt); + return bfsServiceInWebase.link(groupId, signUserId, contractName, contractVersion, contractAddress, abiData); } - public List queryCnsInfoByName(String groupId, String contractName) + public List queryCnsInfoByName(String groupId, String contractName) throws ContractException { - CnsService cnsService = new CnsService(web3ApiService.getWeb3j(groupId), - keyStoreService.getCredentialsForQuery(groupId)); - return cnsService.selectByName(contractName); + return bfsServiceInWebase.list(groupId, CONTRACT_PREFIX + contractName); } public Tuple2 queryCnsByNameAndVersion(String groupId, String contractName, String version) throws ContractException { - CnsService cnsService = new CnsService(web3ApiService.getWeb3j(groupId), - keyStoreService.getCredentialsForQuery(groupId)); - return cnsService.selectByNameAndVersion(contractName, version); + + List bfsInfoList = bfsServiceInWebase.list(groupId, CONTRACT_PREFIX + contractName + "/" + version); + log.info("queryCnsByNameAndVersion bfsInfoList:{}", bfsInfoList); + // 只有link是cns的 + List versionInfoList = bfsInfoList.stream().filter(bfs + -> CNS_FILE_TYPE.equals(bfs.getFileType())).collect(Collectors.toList()); + log.info("queryCnsByNameAndVersion versionInfoList:{}", versionInfoList); + // 一个版本的cns只有一个 + if (versionInfoList.size() == 1) { + BfsInfo bfsInfo = versionInfoList.get(0); + String address = bfsInfo.getExt().get(0); + String abi = bfsInfo.getExt().get(1); + return new Tuple2(address, abi); + } else { + return new Tuple2("", ""); + } } public ResCnsInfo queryCnsByNameAndVersion2(String groupId, String contractName, String version) throws ContractException { ResCnsInfo resCnsInfo = new ResCnsInfo(); - CnsService cnsService = new CnsService(web3ApiService.getWeb3j(groupId), - keyStoreService.getCredentialsForQuery(groupId)); - Tuple2 tuple2 = cnsService.selectByNameAndVersion(contractName, version); + + Tuple2 tuple2 = this.queryCnsByNameAndVersion(groupId, contractName, version); resCnsInfo.setAddress(tuple2.getValue1()); resCnsInfo.setAbi(tuple2.getValue2()); return resCnsInfo; @@ -98,9 +94,8 @@ public ResCnsInfo queryCnsByNameAndVersion2(String groupId, String contractName, public String getAddressByContractNameAndVersion(String groupId, String contractName, String version) throws ContractException { - CnsService cnsService = new CnsService(web3ApiService.getWeb3j(groupId), - keyStoreService.getCredentialsForQuery(groupId)); - return cnsService.getContractAddress(contractName, version); + Tuple2 tuple2 = this.queryCnsByNameAndVersion(groupId, contractName, version); + return tuple2.getValue1(); } } diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/consensus/ConsensusServiceInWebase.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/consensus/ConsensusServiceInWebase.java index 28614311b..57de8cf5c 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/consensus/ConsensusServiceInWebase.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/consensus/ConsensusServiceInWebase.java @@ -16,15 +16,16 @@ import static com.webank.webase.front.util.PrecompiledUtils.NODE_TYPE_OBSERVER; import static com.webank.webase.front.util.PrecompiledUtils.NODE_TYPE_REMOVE; import static com.webank.webase.front.util.PrecompiledUtils.NODE_TYPE_SEALER; -import static org.fisco.bcos.sdk.contract.precompiled.consensus.ConsensusPrecompiled.FUNC_ADDOBSERVER; -import static org.fisco.bcos.sdk.contract.precompiled.consensus.ConsensusPrecompiled.FUNC_ADDSEALER; -import static org.fisco.bcos.sdk.contract.precompiled.consensus.ConsensusPrecompiled.FUNC_REMOVE; +import static org.fisco.bcos.sdk.v3.contract.precompiled.consensus.ConsensusPrecompiled.FUNC_ADDOBSERVER; +import static org.fisco.bcos.sdk.v3.contract.precompiled.consensus.ConsensusPrecompiled.FUNC_ADDSEALER; +import static org.fisco.bcos.sdk.v3.contract.precompiled.consensus.ConsensusPrecompiled.FUNC_REMOVE; import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.enums.PrecompiledTypes; import com.webank.webase.front.base.exception.FrontException; import com.webank.webase.front.base.response.BaseResponse; import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; +import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtils; import com.webank.webase.front.precntauth.precompiled.consensus.entity.NodeInfo; import com.webank.webase.front.transaction.TransService; import com.webank.webase.front.web3api.Web3ApiService; @@ -33,12 +34,12 @@ import java.util.List; import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.client.protocol.response.SealerList.Sealer; -import org.fisco.bcos.sdk.model.PrecompiledRetCode; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.codec.decode.ReceiptParser; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.client.protocol.response.SealerList.Sealer; +import org.fisco.bcos.sdk.v3.model.PrecompiledRetCode; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.codec.decode.ReceiptParser; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -94,7 +95,7 @@ public String addSealerHandle(String groupId, String signUserId, String nodeId, TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_ADDSEALER, funcParams, isWasm); - return this.handleTransactionReceipt(receipt); + return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); } private boolean isValidNodeID(String _nodeID, String groupId) { @@ -155,7 +156,7 @@ private String addObserverHandle(String groupId, String signUserId, String nodeI TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_ADDOBSERVER, funcParams, isWasm); - return this.handleTransactionReceipt(receipt); + return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); } public String removeNode(String groupId, String signUserId, String nodeId) { @@ -188,25 +189,9 @@ public String removeNode(String groupId, String signUserId, String nodeId) { throw e; } } - return this.handleTransactionReceipt(receipt); + return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); } - private String handleTransactionReceipt(TransactionReceipt receipt) { - log.debug("handle tx receipt of precompiled"); - try { - RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt(receipt); - log.info("handleTransactionReceipt sdkRetCode:{}", sdkRetCode); - if (sdkRetCode.getCode() >= 0) { - return new BaseResponse(ConstantCode.RET_SUCCESS, - sdkRetCode.getMessage()).toString(); - } else { - throw new FrontException(sdkRetCode.getCode(), sdkRetCode.getMessage()); - } - } catch (ContractException e) { - log.error("handleTransactionReceipt e:[]", e); - throw new FrontException(e.getErrorCode(), e.getMessage()); - } - } public List getNodeList(String groupId) { // nodeListWithType 组合多个带有类型的nodeid list diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableController.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableController.java index 79407de09..a0b6b2d97 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableController.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableController.java @@ -1,61 +1,61 @@ -package com.webank.webase.front.precntauth.precompiled.crud; - -import com.webank.webase.front.precntauth.precompiled.crud.entity.ReqCreateTableInfo; -import com.webank.webase.front.precntauth.precompiled.crud.entity.ReqGetTableInfo; -import com.webank.webase.front.precntauth.precompiled.crud.entity.ReqSetTableInfo; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiOperation; -import java.util.Map; -import javax.validation.Valid; -import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@Api(value = "precntauth/precompiled/kvtable", tags = "precntauth precompiled controller") -@Slf4j -@RestController -@RequestMapping(value = "precntauth/precompiled/kvtable") -public class KVTableController { - - @Autowired - private KVTableServiceInWebase kvTableService; - - @ApiOperation(value = "create the table") - @ApiImplicitParam(name = "reqCreateTableInfo", value = "create table info", required = true, dataType = "ReqCreateTableInfo") - @PostMapping("reqCreateTable") - public Object createTable(@Valid @RequestBody ReqCreateTableInfo reqCreateTableInfo) - throws ContractException { - String res = kvTableService.createTable(reqCreateTableInfo.getGroupId(), - reqCreateTableInfo.getSignUserId(), - reqCreateTableInfo.getTableName(), reqCreateTableInfo.getKeyFieldName(), - reqCreateTableInfo.getValueFields()); - return res; - } - - @ApiOperation(value = "set the table") - @ApiImplicitParam(name = "reqSetTableInfo", value = "set table info", required = true, dataType = "ReqSetTableInfo") - @PostMapping("reqSetTable") - public Object set(@Valid @RequestBody ReqSetTableInfo reqSetTableInfo) throws ContractException { - Object res = kvTableService.set(reqSetTableInfo.getGroupId(), reqSetTableInfo.getSignUserId(), - reqSetTableInfo.getTableName(), - reqSetTableInfo.getKey(), - reqSetTableInfo.getFieldNameToValue()); - return res; - } - - @ApiOperation(value = "get the table") - @ApiImplicitParam(name = "reqGetTableInfo", value = "get table info", required = true, dataType = "ReqGetTableInfo") - @PostMapping("reqGetTable") - public Object get(@Valid @RequestBody ReqGetTableInfo reqGetTableInfo) throws ContractException { - Map res = kvTableService.get(reqGetTableInfo.getGroupId(), - reqGetTableInfo.getTableName(), - reqGetTableInfo.getKey()); - return res; - } - -} +//package com.webank.webase.front.precntauth.precompiled.crud; +// +//import com.webank.webase.front.precntauth.precompiled.crud.entity.ReqCreateTableInfo; +//import com.webank.webase.front.precntauth.precompiled.crud.entity.ReqGetTableInfo; +//import com.webank.webase.front.precntauth.precompiled.crud.entity.ReqSetTableInfo; +//import io.swagger.annotations.Api; +//import io.swagger.annotations.ApiImplicitParam; +//import io.swagger.annotations.ApiOperation; +//import java.util.Map; +//import javax.validation.Valid; +//import lombok.extern.slf4j.Slf4j; +//import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestBody; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +// +//@Api(value = "precntauth/precompiled/kvtable", tags = "precntauth precompiled controller") +//@Slf4j +//@RestController +//@RequestMapping(value = "precntauth/precompiled/kvtable") +//public class KVTableController { +// +// @Autowired +// private KVTableServiceInWebase kvTableService; +// +// @ApiOperation(value = "create the table") +// @ApiImplicitParam(name = "reqCreateTableInfo", value = "create table info", required = true, dataType = "ReqCreateTableInfo") +// @PostMapping("reqCreateTable") +// public Object createTable(@Valid @RequestBody ReqCreateTableInfo reqCreateTableInfo) +// throws ContractException { +// String res = kvTableService.createTable(reqCreateTableInfo.getGroupId(), +// reqCreateTableInfo.getSignUserId(), +// reqCreateTableInfo.getTableName(), reqCreateTableInfo.getKeyFieldName(), +// reqCreateTableInfo.getValueFields()); +// return res; +// } +// +// @ApiOperation(value = "set the table") +// @ApiImplicitParam(name = "reqSetTableInfo", value = "set table info", required = true, dataType = "ReqSetTableInfo") +// @PostMapping("reqSetTable") +// public Object set(@Valid @RequestBody ReqSetTableInfo reqSetTableInfo) throws ContractException { +// Object res = kvTableService.set(reqSetTableInfo.getGroupId(), reqSetTableInfo.getSignUserId(), +// reqSetTableInfo.getTableName(), +// reqSetTableInfo.getKey(), +// reqSetTableInfo.getFieldNameToValue()); +// return res; +// } +// +// @ApiOperation(value = "get the table") +// @ApiImplicitParam(name = "reqGetTableInfo", value = "get table info", required = true, dataType = "ReqGetTableInfo") +// @PostMapping("reqGetTable") +// public Object get(@Valid @RequestBody ReqGetTableInfo reqGetTableInfo) throws ContractException { +// Map res = kvTableService.get(reqGetTableInfo.getGroupId(), +// reqGetTableInfo.getTableName(), +// reqGetTableInfo.getKey()); +// return res; +// } +// +//} diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableServiceInWebase.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableServiceInWebase.java index b70d932e5..69deb958a 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableServiceInWebase.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/crud/KVTableServiceInWebase.java @@ -1,165 +1,165 @@ -/* - * Copyright 2014-2020 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - */ -package com.webank.webase.front.precntauth.precompiled.crud; - -import static org.fisco.bcos.sdk.contract.precompiled.crud.KVTablePrecompiled.FUNC_CREATETABLE; -import static org.fisco.bcos.sdk.contract.precompiled.crud.KVTablePrecompiled.FUNC_SET; -import static org.fisco.bcos.sdk.contract.precompiled.crud.KVTableService.convertValueFieldsToString; - -import com.webank.webase.front.base.enums.PrecompiledTypes; -import com.webank.webase.front.keystore.KeyStoreService; -import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; -import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtil; -import com.webank.webase.front.transaction.TransService; -import com.webank.webase.front.web3api.Web3ApiService; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.contract.precompiled.crud.KVTableService; -import org.fisco.bcos.sdk.contract.precompiled.crud.common.Entry; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -/** - * kvtable service - * Handle transaction through webase-sign. - */ -@Slf4j -@Service -public class KVTableServiceInWebase { - - @Autowired - private Web3ApiService web3ApiService; - @Autowired - private KeyStoreService keyStoreService; - @Autowired - private TransService transService; - - /*** - * createTable - * @param groupId - * @param signUserId - * @param tableName - * @param keyFieldName - * @param valueFields - * @return - * @throws ContractException - */ - public String createTable(String groupId, String signUserId, String tableName, - String keyFieldName, - List valueFields) - throws ContractException { - String res = this.createTableHandle(groupId, signUserId, tableName, keyFieldName, valueFields); - return res; - - } - - public String createTableHandle(String groupId, String signUserId, String tableName, - String keyFieldName, List valueFields) { - List funcParams = new ArrayList<>(); - funcParams.add(tableName); - funcParams.add(keyFieldName); - String valueFieldsString = convertValueFieldsToString(valueFields); - funcParams.add(valueFieldsString); - String contractAddress; - boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); - if (isWasm) { - contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD_LIQUID); - } else { - contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD); - } - String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CRUD); - TransactionReceipt receipt = - (TransactionReceipt) transService.transHandleWithSign(groupId, - signUserId, contractAddress, abiStr, FUNC_CREATETABLE, funcParams, isWasm); - return PrecompiledUtil.handleTransactionReceipt(receipt); - } - - /** - * set data - * - * @param groupId - * @param signUserId - * @param tableName - * @param key - * @param fieldNameToValue - * @return - * @throws ContractException - */ - public Object set(String groupId, String signUserId, String tableName, String key, - Map fieldNameToValue) - throws ContractException { - String res = this.setHandle(groupId, signUserId, tableName, key, fieldNameToValue); - return res; - } - - public String setHandle(String groupId, String signUserId, String tableName, String key, - Map fieldNameToValue) { - List funcParams = new ArrayList<>(); - funcParams.add(tableName); - funcParams.add(key); - Entry entry = new Entry(); - entry.setFieldNameToValue(fieldNameToValue); - //be careful :entry.getKVPrecompiledEntry() - funcParams.add(entry.getKVPrecompiledEntry()); - String contractAddress; - boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); - if (isWasm) { - contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD_LIQUID); - } else { - contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD); - } - String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CRUD); - TransactionReceipt receipt = - (TransactionReceipt) transService.transHandleWithSign(groupId, - signUserId, contractAddress, abiStr, FUNC_SET, funcParams, isWasm); - return PrecompiledUtil.handleTransactionReceipt(receipt); - } - - /** - * read data - * - * @param groupId - * @param tableName - * @param key - * @return - * @throws ContractException - */ - public Map get(String groupId, String tableName, String key) - throws ContractException { - KVTableService kvTableService = new KVTableService(web3ApiService.getWeb3j(groupId), - keyStoreService.getCredentialsForQuery(groupId)); - Map res = kvTableService.get(tableName, key); - return res; - } - - /** - * desc info of table - * - * @param groupId - * @param tableName - * @return - * @throws ContractException - */ - public Map desc(String groupId, String tableName) throws ContractException { - KVTableService kvTableService = new KVTableService(web3ApiService.getWeb3j(groupId), - keyStoreService.getCredentialsForQuery(groupId)); - Map res = kvTableService.desc(tableName); - return res; - } - -} +///* +// * Copyright 2014-2020 the original author or authors. +// * +// * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except +// * in compliance with the License. You may obtain a copy of the License at +// * +// * http://www.apache.org/licenses/LICENSE-2.0 +// * +// * Unless required by applicable law or agreed to in writing, software distributed under the License +// * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +// * or implied. See the License for the specific language governing permissions and limitations under +// * the License. +// */ +//package com.webank.webase.front.precntauth.precompiled.crud; +// +//import static org.fisco.bcos.sdk.v3.contract.precompiled.crud.KVTablePrecompiled.FUNC_SET; +//import static org.fisco.bcos.sdk.v3.contract.precompiled.crud.TableManagerPrecompiled.FUNC_CREATETABLE; +// +//import com.webank.webase.front.base.enums.PrecompiledTypes; +//import com.webank.webase.front.keystore.KeyStoreService; +//import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; +//import com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtils; +//import com.webank.webase.front.transaction.TransService; +//import com.webank.webase.front.web3api.Web3ApiService; +//import java.util.ArrayList; +//import java.util.Collections; +//import java.util.List; +//import java.util.Map; +//import lombok.extern.slf4j.Slf4j; +//import org.fisco.bcos.sdk.v3.contract.precompiled.crud.KVTableService; +//import org.fisco.bcos.sdk.v3.contract.precompiled.crud.common.Entry; +//import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +//import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Service; +// +///** +// * kvtable service +// * Handle transaction through webase-sign. +// */ +//@Slf4j +//@Service +//public class KVTableServiceInWebase { +// +// @Autowired +// private Web3ApiService web3ApiService; +// @Autowired +// private KeyStoreService keyStoreService; +// @Autowired +// private TransService transService; +// +// /*** +// * createTable +// * @param groupId +// * @param signUserId +// * @param tableName +// * @param keyFieldName +// * @param valueFields +// * @return +// * @throws ContractException +// */ +// public String createTable(String groupId, String signUserId, String tableName, +// String keyFieldName, +// List valueFields) +// throws ContractException { +// String res = this.createTableHandle(groupId, signUserId, tableName, keyFieldName, valueFields); +// return res; +// +// } +// +// public String createTableHandle(String groupId, String signUserId, String tableName, +// String keyFieldName, List valueFields) { +// List funcParams = new ArrayList<>(); +// funcParams.add(tableName); +// funcParams.add(keyFieldName); +// String valueFieldsString = convertValueFieldsToString(valueFields); +// funcParams.add(valueFieldsString); +// String contractAddress; +// boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); +// if (isWasm) { +// contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD_LIQUID); +// } else { +// contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD); +// } +// String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CRUD); +// TransactionReceipt receipt = +// (TransactionReceipt) transService.transHandleWithSign(groupId, +// signUserId, contractAddress, abiStr, FUNC_CREATETABLE, funcParams, isWasm); +// return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); +// } +// +// /** +// * set data +// * +// * @param groupId +// * @param signUserId +// * @param tableName +// * @param key +// * @param fieldNameToValue +// * @return +// * @throws ContractException +// */ +// public Object set(String groupId, String signUserId, String tableName, String key, +// Map fieldNameToValue) +// throws ContractException { +// String res = this.setHandle(groupId, signUserId, tableName, key, fieldNameToValue); +// return res; +// } +// +// public String setHandle(String groupId, String signUserId, String tableName, String key, +// Map fieldNameToValue) { +// List funcParams = new ArrayList<>(); +// funcParams.add(tableName); +// funcParams.add(key); +// Entry entry = new Entry(Collections.emptyList(), key, fieldNameToValue); // todo check +// entry.setFieldNameToValue(fieldNameToValue); +// //be careful :entry.getKVPrecompiledEntry() +// funcParams.add(entry.getKVPrecompiledEntry()); +// String contractAddress; +// boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); +// if (isWasm) { +// contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD_LIQUID); +// } else { +// contractAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CRUD); +// } +// String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CRUD); +// TransactionReceipt receipt = +// (TransactionReceipt) transService.transHandleWithSign(groupId, +// signUserId, contractAddress, abiStr, FUNC_SET, funcParams, isWasm); +// return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); +// } +// +// /** +// * read data +// * +// * @param groupId +// * @param tableName +// * @param key +// * @return +// * @throws ContractException +// */ +// public Map get(String groupId, String tableName, String key) +// throws ContractException { +// KVTableService kvTableService = new KVTableService(web3ApiService.getWeb3j(groupId), +// keyStoreService.getCredentialsForQuery(groupId)); +// Map res = kvTableService.get(tableName, key); +// return res; +// } +// +// /** +// * desc info of table +// * +// * @param groupId +// * @param tableName +// * @return +// * @throws ContractException +// */ +// public Map desc(String groupId, String tableName) throws ContractException { +// KVTableService kvTableService = new KVTableService(web3ApiService.getWeb3j(groupId), +// keyStoreService.getCredentialsForQuery(groupId)); +// Map res = kvTableService.desc(tableName); +// return res; +// } +// +//} diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/sysconf/SysConfigServiceInWebase.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/sysconf/SysConfigServiceInWebase.java index 8bc6fd3aa..d7f148535 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/sysconf/SysConfigServiceInWebase.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/sysconf/SysConfigServiceInWebase.java @@ -13,7 +13,8 @@ */ package com.webank.webase.front.precntauth.precompiled.sysconf; -import static org.fisco.bcos.sdk.contract.precompiled.sysconfig.SystemConfigPrecompiled.FUNC_SETVALUEBYKEY; + +import static org.fisco.bcos.sdk.v3.contract.precompiled.sysconfig.SystemConfigPrecompiled.FUNC_SETVALUEBYKEY; import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.enums.PrecompiledTypes; @@ -26,13 +27,20 @@ import com.webank.webase.front.util.PrecompiledUtils; import com.webank.webase.front.web3api.Web3ApiService; import java.io.IOException; +import java.math.BigInteger; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.model.RetCode; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.codec.decode.ReceiptParser; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.codec.FunctionReturnDecoderInterface; +import org.fisco.bcos.sdk.v3.codec.Utils; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int32; +import org.fisco.bcos.sdk.v3.model.RetCode; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.codec.decode.ReceiptParser; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -124,7 +132,7 @@ public String setValueByKey(String groupId, String signUserId, String key, Strin TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_SETVALUEBYKEY, funcParams, isWasm); - return this.handleTransactionReceipt(receipt); + return this.handleTransactionReceipt(receipt, isWasm); } public String getSysConfigByKey(String groupId, String key) { @@ -133,10 +141,24 @@ public String getSysConfigByKey(String groupId, String key) { return result; } - private String handleTransactionReceipt(TransactionReceipt receipt) { + private String handleTransactionReceipt(TransactionReceipt receipt, boolean isWasm) { log.debug("handle tx receipt of precompiled"); try { - RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt(receipt); + RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt( + receipt, + tr -> { + FunctionReturnDecoderInterface decoderInterface = + isWasm + ? new org.fisco.bcos.sdk.v3.codec.scale.FunctionReturnDecoder() + : new org.fisco.bcos.sdk.v3.codec.abi.FunctionReturnDecoder(); + List decode = + decoderInterface.decode( + tr.getOutput(), + Utils.convert( + Collections.singletonList( + new TypeReference() {}))); + return (BigInteger) decode.get(0).getValue(); + }); log.info("handleTransactionReceipt sdkRetCode:{}", sdkRetCode); if (sdkRetCode.getCode() >= 0) { return new BaseResponse(ConstantCode.RET_SUCCESS, diff --git a/src/main/java/com/webank/webase/front/task/SyncEventMapTask.java b/src/main/java/com/webank/webase/front/task/SyncEventMapTask.java index 6b3e6bb68..bb78eb0ef 100644 --- a/src/main/java/com/webank/webase/front/task/SyncEventMapTask.java +++ b/src/main/java/com/webank/webase/front/task/SyncEventMapTask.java @@ -25,8 +25,8 @@ import com.webank.webase.front.event.entity.ContractEventInfo; import com.webank.webase.front.event.entity.NewBlockEventInfo; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.BcosSDK; -import org.fisco.bcos.sdk.eventsub.EventSubscribe; +import org.fisco.bcos.sdk.v3.BcosSDK; +import org.fisco.bcos.sdk.v3.eventsub.EventSubscribe; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; diff --git a/src/main/java/com/webank/webase/front/tool/ToolController.java b/src/main/java/com/webank/webase/front/tool/ToolController.java index 19aaca9f7..e32f92c9a 100644 --- a/src/main/java/com/webank/webase/front/tool/ToolController.java +++ b/src/main/java/com/webank/webase/front/tool/ToolController.java @@ -35,19 +35,19 @@ //import javax.validation.Valid; //import lombok.extern.slf4j.Slf4j; //import org.apache.commons.lang3.StringUtils; -//import org.fisco.bcos.sdk.codec.ABICodec; -//import org.fisco.bcos.sdk.codec.ABICodecException; -//import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes32; -//import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -//import org.fisco.bcos.sdk.crypto.keypair.ECDSAKeyPair; -//import org.fisco.bcos.sdk.crypto.keypair.SM2KeyPair; -//import org.fisco.bcos.sdk.crypto.keystore.KeyTool; -//import org.fisco.bcos.sdk.crypto.keystore.P12KeyStore; -//import org.fisco.bcos.sdk.crypto.keystore.PEMKeyStore; -//import org.fisco.bcos.sdk.crypto.signature.SignatureResult; -//import org.fisco.bcos.sdk.model.CryptoType; -//import org.fisco.bcos.sdk.transaction.codec.decode.TransactionDecoderService; -//import org.fisco.bcos.sdk.utils.Numeric; +//import org.fisco.bcos.sdk.v3.codec.ContractCodec; +//import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +//import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32; +//import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +//import org.fisco.bcos.sdk.v3.crypto.keypair.ECDSAKeyPair; +//import org.fisco.bcos.sdk.v3.crypto.keypair.SM2KeyPair; +//import org.fisco.bcos.sdk.v3.crypto.keystore.KeyTool; +//import org.fisco.bcos.sdk.v3.crypto.keystore.P12KeyStore; +//import org.fisco.bcos.sdk.v3.crypto.keystore.PEMKeyStore; +//import org.fisco.bcos.sdk.v3.crypto.signature.SignatureResult; +//import org.fisco.bcos.sdk.v3.model.CryptoType; +//import org.fisco.bcos.sdk.v3.transaction.codec.decode.TransactionDecoderService; +//import org.fisco.bcos.sdk.v3.utils.Numeric; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.beans.factory.annotation.Qualifier; //import org.springframework.web.bind.annotation.GetMapping; @@ -80,12 +80,12 @@ // return txDecoder.decodeReceiptMessage(param.getInput()); // } else if (param.getDecodeType() == 2) { // String abi = JsonUtils.objToString(param.getAbiList()); -// ABICodec abiCodec = new ABICodec(web3ApiService.getCryptoSuite(groupId), false); +// ContractCodec abiCodec = new ContractCodec(web3ApiService.getCryptoSuite(groupId), false); // // decode output // try { // return abiCodec.decodeMethodAndGetOutputObject(abi, param.getMethodName(), // param.getOutput()); -// } catch (ABICodecException e) { +// } catch (ContractCodecException e) { // log.error("abi decode fail:{}", e.getMessage()); // throw new FrontException(ConstantCode.CONTRACT_ABI_PARSE_JSON_ERROR); // } diff --git a/src/main/java/com/webank/webase/front/tool/entity/RspKeyPair.java b/src/main/java/com/webank/webase/front/tool/entity/RspKeyPair.java index 6677802da..b779291ad 100644 --- a/src/main/java/com/webank/webase/front/tool/entity/RspKeyPair.java +++ b/src/main/java/com/webank/webase/front/tool/entity/RspKeyPair.java @@ -16,7 +16,7 @@ import lombok.Data; import lombok.NoArgsConstructor; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; @Data @NoArgsConstructor diff --git a/src/main/java/com/webank/webase/front/tool/entity/RspSignData.java b/src/main/java/com/webank/webase/front/tool/entity/RspSignData.java index fa5aedd87..21bb55af4 100644 --- a/src/main/java/com/webank/webase/front/tool/entity/RspSignData.java +++ b/src/main/java/com/webank/webase/front/tool/entity/RspSignData.java @@ -16,7 +16,7 @@ import lombok.AllArgsConstructor; import lombok.Data; -import org.fisco.bcos.sdk.crypto.signature.SignatureResult; +import org.fisco.bcos.sdk.v3.crypto.signature.SignatureResult; @Data @AllArgsConstructor diff --git a/src/main/java/com/webank/webase/front/transaction/TransController.java b/src/main/java/com/webank/webase/front/transaction/TransController.java index 0859fe3fe..16dfc24b1 100644 --- a/src/main/java/com/webank/webase/front/transaction/TransController.java +++ b/src/main/java/com/webank/webase/front/transaction/TransController.java @@ -44,8 +44,8 @@ import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.utils.Numeric; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; @@ -83,7 +83,7 @@ public Object transHandle(@Valid @RequestBody ReqTransHandleWithSign reqTransHan } if (StringUtils.isNotBlank(address) && ( (!reqTransHandle.getIsWasm() && address.length() != Address.ValidLen) - || (!reqTransHandle.getIsWasm() && org.fisco.bcos.sdk.codec.datatypes.Address.DEFAULT.toString().equals(address)) ) + || (!reqTransHandle.getIsWasm() && org.fisco.bcos.sdk.v3.codec.datatypes.Address.DEFAULT.toString().equals(address)) ) ) { throw new FrontException(PARAM_ADDRESS_IS_INVALID); } diff --git a/src/main/java/com/webank/webase/front/transaction/TransService.java b/src/main/java/com/webank/webase/front/transaction/TransService.java index 4b8dc2ad9..12121a61a 100644 --- a/src/main/java/com/webank/webase/front/transaction/TransService.java +++ b/src/main/java/com/webank/webase/front/transaction/TransService.java @@ -39,38 +39,37 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.client.protocol.model.tars.TransactionData; -import org.fisco.bcos.sdk.client.protocol.request.Transaction; -import org.fisco.bcos.sdk.client.protocol.response.Call.CallOutput; -import org.fisco.bcos.sdk.codec.ABICodec; -import org.fisco.bcos.sdk.codec.ABICodecException; -import org.fisco.bcos.sdk.codec.Utils; -import org.fisco.bcos.sdk.codec.abi.FunctionReturnDecoder; -import org.fisco.bcos.sdk.codec.datatypes.Type; -import org.fisco.bcos.sdk.codec.datatypes.TypeReference; -import org.fisco.bcos.sdk.codec.datatypes.generated.tuples.generated.Tuple2; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition.NamedType; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinitionFactory; -import org.fisco.bcos.sdk.codec.wrapper.ContractABIDefinition; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -import org.fisco.bcos.sdk.crypto.signature.ECDSASignatureResult; -import org.fisco.bcos.sdk.crypto.signature.SM2SignatureResult; -import org.fisco.bcos.sdk.crypto.signature.SignatureResult; -import org.fisco.bcos.sdk.model.CryptoType; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.transaction.builder.TransactionBuilderInterface; -import org.fisco.bcos.sdk.transaction.builder.TransactionBuilderService; -import org.fisco.bcos.sdk.transaction.codec.decode.RevertMessageParser; -import org.fisco.bcos.sdk.transaction.codec.decode.TransactionDecoderService; -import org.fisco.bcos.sdk.transaction.codec.encode.TransactionEncoderService; -import org.fisco.bcos.sdk.transaction.manager.TransactionProcessor; -import org.fisco.bcos.sdk.transaction.manager.TransactionProcessorFactory; -import org.fisco.bcos.sdk.transaction.pusher.TransactionPusherService; -import org.fisco.bcos.sdk.utils.Hex; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.jni.common.JniException; +import org.fisco.bcos.sdk.jni.utilities.tx.TransactionBuilderJniObj; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.client.protocol.request.Transaction; +import org.fisco.bcos.sdk.v3.client.protocol.response.Call.CallOutput; +import org.fisco.bcos.sdk.v3.codec.ContractCodec; +import org.fisco.bcos.sdk.v3.codec.ContractCodecException; +import org.fisco.bcos.sdk.v3.codec.Utils; +import org.fisco.bcos.sdk.v3.codec.abi.FunctionReturnDecoder; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition.NamedType; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinitionFactory; +import org.fisco.bcos.sdk.v3.codec.wrapper.ContractABIDefinition; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.crypto.signature.ECDSASignatureResult; +import org.fisco.bcos.sdk.v3.crypto.signature.SM2SignatureResult; +import org.fisco.bcos.sdk.v3.crypto.signature.SignatureResult; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.transaction.codec.decode.RevertMessageParser; +import org.fisco.bcos.sdk.v3.transaction.codec.decode.TransactionDecoderService; +import org.fisco.bcos.sdk.v3.transaction.codec.encode.TransactionEncoderService; +import org.fisco.bcos.sdk.v3.transaction.manager.TransactionProcessor; +import org.fisco.bcos.sdk.v3.transaction.manager.TransactionProcessorFactory; +import org.fisco.bcos.sdk.v3.transaction.pusher.TransactionPusherService; +import org.fisco.bcos.sdk.v3.utils.Hex; +import org.fisco.bcos.sdk.v3.utils.Numeric; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -168,14 +167,28 @@ public Object transHandleWithSign(String groupId, String signUserId, public String signMessage(String groupId, Client client, String signUserId, String contractAddress, byte[] data, boolean isDeploy) { log.info("signMessage data:{}", Hex.toHexString(data)); + Instant nodeStartTime = Instant.now(); // to encode raw tx Pair chainIdAndGroupId = TransactionProcessorFactory.getChainIdAndGroupId(client); - TransactionBuilderService txBuilderService = new TransactionBuilderService(web3ApiService.getWeb3j(groupId)); - TransactionData rawTransaction = txBuilderService - .createTransaction(contractAddress, data, chainIdAndGroupId.getLeft(), String.valueOf(groupId)); - log.debug("signMessage rawTransaction:{}", JsonUtils.objToString(rawTransaction)); - TransactionEncoderService encoderService = new TransactionEncoderService(web3ApiService.getCryptoSuite(groupId)); - byte[] encodedTransaction = encoderService.encode(rawTransaction); + long transactionData = 0L; + String encodedTransaction = ""; + String transactionDataHash = ""; + try { + transactionData = TransactionBuilderJniObj + .createTransactionData(String.valueOf(groupId), chainIdAndGroupId.getLeft(), + contractAddress, Numeric.toHexString(data), "", client.getBlockLimit().longValue()); + encodedTransaction = TransactionBuilderJniObj.encodeTransactionData(transactionData); + transactionDataHash = TransactionBuilderJniObj.calcTransactionDataHash(client.getCryptoType(), transactionData); + } catch (JniException e) { + log.error("createTransactionData jni error ", e); + } + if (transactionData == 0L + || StringUtils.isBlank(encodedTransaction) + || StringUtils.isBlank(transactionDataHash)) { + log.error("signMessage encodedTransaction:{}|{}|{}", + transactionData, encodedTransaction, transactionDataHash); + throw new FrontException(ConstantCode.ENCODE_TX_JNI_ERROR); + } SignatureResult signData = this.requestSignForSign(encodedTransaction, signUserId, groupId); int mark = client.isWASM() ? USE_WASM : USE_SOLIDITY; @@ -183,8 +196,21 @@ public String signMessage(String groupId, Client client, String signUserId, Stri mark = USE_WASM_DEPLOY; } log.info("mark {}", mark); - byte[] signedMessage = encoderService.encodeToTransactionBytes(rawTransaction, signData, mark); - return Numeric.toHexString(signedMessage); + String transactionDataHashSignedData = signData.convertToString(); + String signedMessage = null; + try { + signedMessage = TransactionBuilderJniObj.createSignedTransaction(transactionData, + transactionDataHashSignedData, + transactionDataHash, mark); + } catch (JniException e) { + log.error("createSignedTransactionData jni error:", e); + } + log.info("***signMessage cost time***: {}", + Duration.between(nodeStartTime, Instant.now()).toMillis()); + if (StringUtils.isBlank(signedMessage)) { + throw new FrontException(ConstantCode.DATA_SIGN_ERROR); + } + return signedMessage; } @@ -370,7 +396,7 @@ public Object signMessageLocalExternal(ReqSignMessageHash req) { String privateKeyRaw = new String(Base64.getDecoder().decode(rspUserInfo.getPrivateKey())); CryptoKeyPair cryptoKeyPair = web3ApiService.getCryptoSuite(groupId).getKeyPairFactory().createKeyPair(privateKeyRaw); SignatureResult signResult = signMessageHashByType( - org.fisco.bcos.sdk.utils.Numeric.cleanHexPrefix(req.getHash()),cryptoKeyPair, + org.fisco.bcos.sdk.v3.utils.Numeric.cleanHexPrefix(req.getHash()),cryptoKeyPair, web3ApiService.getCryptoSuite(groupId).cryptoTypeConfig ); @@ -437,11 +463,11 @@ public byte[] encodeFunction2ByteArr(String abiStr, String funcName, List chainIdAndGroupId = TransactionProcessorFactory.getChainIdAndGroupId(client); - TransactionBuilderInterface transactionBuilder = new TransactionBuilderService(client); - TransactionData rawTransaction = transactionBuilder.createTransaction(contractAddress, - encodeFunction, chainIdAndGroupId.getLeft(), - chainIdAndGroupId.getRight()); + long transactionData = 0L; + String encodedTransaction = ""; + String transactionDataHash = ""; + try { + transactionData = TransactionBuilderJniObj + .createTransactionData(String.valueOf(groupId), chainIdAndGroupId.getLeft(), + contractAddress, Numeric.toHexString(data), "", client.getBlockLimit().longValue()); + encodedTransaction = TransactionBuilderJniObj.encodeTransactionData(transactionData); + transactionDataHash = TransactionBuilderJniObj.calcTransactionDataHash(client.getCryptoType(), transactionData); + } catch (JniException e) { + log.error("createTransactionData jni error ", e); + } + if (transactionData == 0L + || StringUtils.isBlank(encodedTransaction) + || StringUtils.isBlank(transactionDataHash)) { + log.error("signMessage encodedTransaction:{}|{}|{}", + transactionData, encodedTransaction, transactionDataHash); + throw new FrontException(ConstantCode.ENCODE_TX_JNI_ERROR); + } - TransactionEncoderService encoderService = new TransactionEncoderService(client.getCryptoSuite()); - byte[] encodedTransaction = encoderService.encode(rawTransaction); // if user not null: sign, else, not sign if (StringUtils.isBlank(user)) { // return unsigned raw tx encoded str - String unsignedResultStr = Numeric.toHexString(encodedTransaction); + String unsignedResultStr = encodedTransaction; log.info("createRawTxEncoded unsignedResultStr:{}", unsignedResultStr); return unsignedResultStr; } else { log.info("createRawTxEncoded use key of address [{}] to sign", user); // hash encoded, to sign locally - byte[] hashMessage = client.getCryptoSuite().hash(encodedTransaction); + byte[] hashMessage = client.getCryptoSuite().hash(Numeric.hexStringToByteArray(encodedTransaction)); String hashMessageStr = Numeric.toHexString(hashMessage); log.info("createRawTxEncoded encoded tx of hex str:{}", hashMessageStr); // if local, sign locally log.info("createRawTxEncoded isLocal:{}", isLocal); - String signResultStr; + String signResultStr = null; if (isLocal) { CryptoKeyPair cryptoKeyPair = this.getCredentials(false, user, groupId); SignatureResult signData = signMessageHashByType(hashMessageStr, cryptoKeyPair, client.getCryptoSuite().cryptoTypeConfig); // encode again - byte[] signedMessage = encoderService.encodeToTransactionBytes(rawTransaction, signData, client.isWASM() ? USE_WASM : USE_SOLIDITY); - signResultStr = Numeric.toHexString(signedMessage); + String transactionDataHashSignedData = signData.convertToString(); + try { + signResultStr = TransactionBuilderJniObj.createSignedTransaction(transactionData, + transactionDataHashSignedData, + transactionDataHash, client.isWASM() ? USE_WASM : USE_SOLIDITY); + } catch (JniException e) { + log.error("createSignedTransactionData jni error:", e); + } } else { // sign by webase-sign // convert encoded to hex string (no need to hash then toHex) - hashMessageStr = Numeric.toHexString(encodedTransaction); - EncodeInfo encodeInfo = new EncodeInfo(user, hashMessageStr); + EncodeInfo encodeInfo = new EncodeInfo(user, encodedTransaction); String signDataStr = keyStoreService.getSignData(encodeInfo); SignatureResult signData = CommonUtils.stringToSignatureData(signDataStr, client.getCryptoSuite().cryptoTypeConfig); - byte[] signedMessage = encoderService.encodeToTransactionBytes(rawTransaction, signData, client.isWASM() ? USE_WASM : USE_SOLIDITY); - signResultStr = Numeric.toHexString(signedMessage); + // encode again + String transactionDataHashSignedData = signData.convertToString(); + try { + signResultStr = TransactionBuilderJniObj.createSignedTransaction(transactionData, + transactionDataHashSignedData, + transactionDataHash, client.isWASM() ? USE_WASM : USE_SOLIDITY); + } catch (JniException e) { + log.error("createSignedTransactionData jni error:", e); + } + } + log.info("***signMessage cost time***: {}", + Duration.between(startTime, Instant.now()).toMillis()); + if (StringUtils.isBlank(signResultStr)) { + throw new FrontException(ConstantCode.ENCODE_TX_JNI_ERROR); } log.info("createRawTxEncoded signResultStr:{}", signResultStr); return signResultStr; } - // trans hash is web3ApiService.getCryptoSuite(groupId).hash(signedStr) } private ABIDefinition getABIDefinition(String abiStr, String functionName, String groupId) { @@ -544,7 +600,7 @@ public List handleCall(String groupId, String userAddress, String contract String parseResultStr = parseResult.getValue1() ? parseResult.getValue2() : "call contract error of status" + callOutput.getStatus(); throw new FrontException(ConstantCode.CALL_CONTRACT_ERROR.getCode(), parseResultStr); } else { - ABICodec abiCodec = new ABICodec(web3ApiService.getCryptoSuite(groupId), client.isWASM()); + ContractCodec abiCodec = new ContractCodec(web3ApiService.getCryptoSuite(groupId), client.isWASM()); try { log.debug("========= callOutput.getOutput():{}", callOutput.getOutput()); // [ @@ -558,7 +614,7 @@ public List handleCall(String groupId, String userAddress, String contract // todo output is byte[] or string Numeric.hexStringToByteArray log.info("call contract res:{}", JsonUtils.objToString(typeList)); return typeList; - } catch (ABICodecException e) { + } catch (ContractCodecException e) { log.error("handleCall decode call output fail:[]", e); throw new FrontException(ConstantCode.CONTRACT_TYPE_DECODED_ERROR); } @@ -613,12 +669,11 @@ public TransactionReceipt handleTransaction(Client client, String signUserId, St /** * sign by - * @param encodedTransaction + * @param encodedDataStr * @param signUserId * @return */ - public SignatureResult requestSignForSign(byte[] encodedTransaction, String signUserId, String groupId) { - String encodedDataStr = Numeric.toHexString(encodedTransaction); + public SignatureResult requestSignForSign(String encodedDataStr, String signUserId, String groupId) { EncodeInfo encodeInfo = new EncodeInfo(); encodeInfo.setSignUserId(signUserId); encodeInfo.setEncodedDataStr(encodedDataStr); diff --git a/src/main/java/com/webank/webase/front/transaction/entity/ContractFunction.java b/src/main/java/com/webank/webase/front/transaction/entity/ContractFunction.java index 2693303e4..e66594a65 100644 --- a/src/main/java/com/webank/webase/front/transaction/entity/ContractFunction.java +++ b/src/main/java/com/webank/webase/front/transaction/entity/ContractFunction.java @@ -5,8 +5,8 @@ import lombok.experimental.Accessors; import java.util.List; -import org.fisco.bcos.sdk.codec.datatypes.TypeReference; -import org.fisco.bcos.sdk.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; /** * abi's function information. diff --git a/src/main/java/com/webank/webase/front/util/AbiTypes.java b/src/main/java/com/webank/webase/front/util/AbiTypes.java index b76a366af..00d3de44d 100644 --- a/src/main/java/com/webank/webase/front/util/AbiTypes.java +++ b/src/main/java/com/webank/webase/front/util/AbiTypes.java @@ -15,9 +15,9 @@ */ package com.webank.webase.front.util; -import org.fisco.bcos.sdk.codec.datatypes.*; -import org.fisco.bcos.sdk.codec.datatypes.Type; -import org.fisco.bcos.sdk.codec.datatypes.generated.*; +import org.fisco.bcos.sdk.v3.codec.datatypes.*; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.*; /** * DataTypes for abi in web3j @@ -75,7 +75,7 @@ public static boolean invalidInt(String type) { public static Class getType(String type) { switch (type) { case "address": - return org.fisco.bcos.sdk.codec.datatypes.Address.class; + return org.fisco.bcos.sdk.v3.codec.datatypes.Address.class; case "bool": return Bool.class; case "string": diff --git a/src/main/java/com/webank/webase/front/util/CommonUtils.java b/src/main/java/com/webank/webase/front/util/CommonUtils.java index 677842db6..d41621f58 100644 --- a/src/main/java/com/webank/webase/front/util/CommonUtils.java +++ b/src/main/java/com/webank/webase/front/util/CommonUtils.java @@ -47,15 +47,15 @@ import java.util.zip.ZipOutputStream; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes32; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -import org.fisco.bcos.sdk.crypto.signature.ECDSASignatureResult; -import org.fisco.bcos.sdk.crypto.signature.SM2SignatureResult; -import org.fisco.bcos.sdk.crypto.signature.SignatureResult; -import org.fisco.bcos.sdk.model.CryptoType; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.crypto.signature.ECDSASignatureResult; +import org.fisco.bcos.sdk.v3.crypto.signature.SM2SignatureResult; +import org.fisco.bcos.sdk.v3.crypto.signature.SignatureResult; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.utils.Numeric; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; diff --git a/src/main/java/com/webank/webase/front/util/ContractAbiUtil.java b/src/main/java/com/webank/webase/front/util/ContractAbiUtil.java index cfd4c2dbd..6aa201739 100644 --- a/src/main/java/com/webank/webase/front/util/ContractAbiUtil.java +++ b/src/main/java/com/webank/webase/front/util/ContractAbiUtil.java @@ -35,13 +35,13 @@ import java.util.regex.Pattern; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.codec.datatypes.DynamicArray; -import org.fisco.bcos.sdk.codec.datatypes.StaticArray; -import org.fisco.bcos.sdk.codec.datatypes.Type; -import org.fisco.bcos.sdk.codec.datatypes.TypeReference; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition.NamedType; -import org.fisco.bcos.sdk.utils.ObjectMapperFactory; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray; +import org.fisco.bcos.sdk.v3.codec.datatypes.StaticArray; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition.NamedType; +import org.fisco.bcos.sdk.v3.utils.ObjectMapperFactory; /** * ContractAbiUtil. @@ -397,7 +397,7 @@ static TypeName buildTypeName(String typeDeclaration) { String type = trimStorageDeclaration(typeDeclaration); Matcher matcher = PATTERN.matcher(type); if (matcher.find()) { - Class baseType = org.fisco.bcos.sdk.codec.datatypes.AbiTypes + Class baseType = org.fisco.bcos.sdk.v3.codec.datatypes.AbiTypes .getType(matcher.group(1)); String firstArrayDimension = matcher.group(2); String secondArrayDimension = matcher.group(3); diff --git a/src/main/java/com/webank/webase/front/util/ContractTypeUtil.java b/src/main/java/com/webank/webase/front/util/ContractTypeUtil.java index 2457d6e24..621fdc656 100644 --- a/src/main/java/com/webank/webase/front/util/ContractTypeUtil.java +++ b/src/main/java/com/webank/webase/front/util/ContractTypeUtil.java @@ -19,19 +19,19 @@ import java.lang.reflect.InvocationTargetException; import java.math.BigInteger; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.codec.datatypes.Address; -import org.fisco.bcos.sdk.codec.datatypes.TypeReference; -import org.fisco.bcos.sdk.codec.datatypes.Bool; -import org.fisco.bcos.sdk.codec.datatypes.Bytes; -import org.fisco.bcos.sdk.codec.datatypes.BytesType; -import org.fisco.bcos.sdk.codec.datatypes.DynamicArray; -import org.fisco.bcos.sdk.codec.datatypes.DynamicBytes; -import org.fisco.bcos.sdk.codec.datatypes.NumericType; -import org.fisco.bcos.sdk.codec.datatypes.Type; -import org.fisco.bcos.sdk.codec.datatypes.Utf8String; -import org.fisco.bcos.sdk.codec.datatypes.generated.*; -import org.fisco.bcos.sdk.utils.Hex; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.Bool; +import org.fisco.bcos.sdk.v3.codec.datatypes.Bytes; +import org.fisco.bcos.sdk.v3.codec.datatypes.BytesType; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicArray; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes; +import org.fisco.bcos.sdk.v3.codec.datatypes.NumericType; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.*; +import org.fisco.bcos.sdk.v3.utils.Hex; +import org.fisco.bcos.sdk.v3.utils.Numeric; /** * ContractTypeUtil. @@ -51,8 +51,8 @@ public class ContractTypeUtil { public static T generateClassFromInput(String input, Class type) throws FrontException { try { - if (org.fisco.bcos.sdk.codec.datatypes.Address.class.isAssignableFrom(type)) { - return (T) new org.fisco.bcos.sdk.codec.datatypes.Address(input); + if (org.fisco.bcos.sdk.v3.codec.datatypes.Address.class.isAssignableFrom(type)) { + return (T) new org.fisco.bcos.sdk.v3.codec.datatypes.Address(input); } else if (NumericType.class.isAssignableFrom(type)) { return (T) encodeNumeric(input, (Class) type); } else if (Bool.class.isAssignableFrom(type)) { @@ -84,7 +84,7 @@ public static T generateClassFromInput(String input, Class t */ public static Object decodeResult(Type result, Class type) throws FrontException { try { - if (org.fisco.bcos.sdk.codec.datatypes.Address.class.isAssignableFrom(type)) { + if (org.fisco.bcos.sdk.v3.codec.datatypes.Address.class.isAssignableFrom(type)) { return result.toString(); } else if (NumericType.class.isAssignableFrom(type)) { return result.getValue(); @@ -145,8 +145,8 @@ static T encodeBytes(String input, Class type) throws Front public static T encodeString(String input, Class type) throws FrontException { try { - if (org.fisco.bcos.sdk.codec.datatypes.Address.class.isAssignableFrom(type)) { - return (T) new org.fisco.bcos.sdk.codec.datatypes.Address(input); + if (org.fisco.bcos.sdk.v3.codec.datatypes.Address.class.isAssignableFrom(type)) { + return (T) new org.fisco.bcos.sdk.v3.codec.datatypes.Address(input); } else if (NumericType.class.isAssignableFrom(type)) { return (T) encodeNumeric(input, (Class) type); } else if (Bool.class.isAssignableFrom(type)) { @@ -221,7 +221,7 @@ public static int searchByte(byte[] data, byte value) { public static TypeReference getArrayType(String type) throws FrontException { switch (type) { case "address": - return new TypeReference>() {}; + return new TypeReference>() {}; case "bool": return new TypeReference>() {}; case "string": diff --git a/src/main/java/com/webank/webase/front/util/PrecompiledUtils.java b/src/main/java/com/webank/webase/front/util/PrecompiledUtils.java index b8aa5c6f4..56fac1a64 100644 --- a/src/main/java/com/webank/webase/front/util/PrecompiledUtils.java +++ b/src/main/java/com/webank/webase/front/util/PrecompiledUtils.java @@ -15,12 +15,8 @@ */ package com.webank.webase.front.util; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.ObjectMapper; -import java.io.IOException; -import java.util.Map; import org.apache.commons.lang3.StringUtils; -import org.fisco.bcos.sdk.model.PrecompiledConstant; +import org.fisco.bcos.sdk.v3.model.PrecompiledConstant; /** * Constants and tool function related with Precompiled module @@ -48,13 +44,10 @@ public class PrecompiledUtils { public static int USER_TABLE_FIELD_NAME_MAX_LENGTH = 64; public static int USER_TABLE_FIELD_VALUE_MAX_LENGTH = 16 * 1024 * 1024 - 1; - public static boolean checkVersion(String version) { if (StringUtils.isBlank(version)) { return false; - }else if (version.length() > PrecompiledConstant.CNS_MAX_VERSION_LENGTH) { // length exceeds - return false; }else if (!version.matches("^[A-Za-z0-9.]+$")) { // check version's character return false; }else { diff --git a/src/main/java/com/webank/webase/front/util/RabbitMQUtils.java b/src/main/java/com/webank/webase/front/util/RabbitMQUtils.java index 84f1fb12d..d31cd8c08 100644 --- a/src/main/java/com/webank/webase/front/util/RabbitMQUtils.java +++ b/src/main/java/com/webank/webase/front/util/RabbitMQUtils.java @@ -28,10 +28,10 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import org.fisco.bcos.sdk.codec.abi.tools.TopicTools; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.eventsub.EventSubParams; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.v3.codec.abi.tools.TopicTools; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.eventsub.EventSubParams; +import org.fisco.bcos.sdk.v3.utils.Numeric; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.DirectExchange; diff --git a/src/main/java/com/webank/webase/front/util/StaticArrayReference.java b/src/main/java/com/webank/webase/front/util/StaticArrayReference.java index 5aeb67ddf..e926b469c 100644 --- a/src/main/java/com/webank/webase/front/util/StaticArrayReference.java +++ b/src/main/java/com/webank/webase/front/util/StaticArrayReference.java @@ -2,77 +2,77 @@ import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.exception.FrontException; -import org.fisco.bcos.sdk.codec.datatypes.Address; -import org.fisco.bcos.sdk.codec.datatypes.Bool; -import org.fisco.bcos.sdk.codec.datatypes.DynamicBytes; -import org.fisco.bcos.sdk.codec.datatypes.TypeReference; -import org.fisco.bcos.sdk.codec.datatypes.Utf8String; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes1; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes10; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes11; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes12; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes13; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes14; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes15; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes16; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes17; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes18; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes19; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes2; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes20; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes21; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes22; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes23; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes24; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes25; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes26; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes27; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes28; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes29; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes3; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes30; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes31; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes32; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes4; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes5; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes6; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes7; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes8; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes9; -import org.fisco.bcos.sdk.codec.datatypes.generated.Int256; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray1; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray10; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray11; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray12; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray13; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray14; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray15; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray16; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray17; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray18; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray19; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray2; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray20; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray21; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray22; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray23; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray24; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray25; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray26; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray27; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray28; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray29; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray3; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray30; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray31; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray32; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray4; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray5; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray6; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray7; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray8; -import org.fisco.bcos.sdk.codec.datatypes.generated.StaticArray9; -import org.fisco.bcos.sdk.codec.datatypes.generated.Uint256; +import org.fisco.bcos.sdk.v3.codec.datatypes.Address; +import org.fisco.bcos.sdk.v3.codec.datatypes.Bool; +import org.fisco.bcos.sdk.v3.codec.datatypes.DynamicBytes; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.datatypes.Utf8String; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes10; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes11; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes12; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes13; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes14; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes15; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes16; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes17; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes18; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes19; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes2; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes20; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes21; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes22; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes23; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes24; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes25; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes26; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes27; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes28; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes29; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes3; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes30; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes31; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes4; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes5; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes6; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes7; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes8; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes9; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int256; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray1; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray10; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray11; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray12; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray13; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray14; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray15; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray16; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray17; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray18; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray19; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray2; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray20; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray21; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray22; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray23; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray24; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray25; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray26; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray27; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray28; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray29; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray3; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray30; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray31; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray32; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray4; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray5; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray6; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray7; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray8; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.StaticArray9; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256; public class StaticArrayReference { diff --git a/src/main/java/com/webank/webase/front/web3api/Web3ApiController.java b/src/main/java/com/webank/webase/front/web3api/Web3ApiController.java index 5c6c3b294..87e60eeca 100644 --- a/src/main/java/com/webank/webase/front/web3api/Web3ApiController.java +++ b/src/main/java/com/webank/webase/front/web3api/Web3ApiController.java @@ -21,16 +21,16 @@ import io.swagger.annotations.ApiOperation; import java.math.BigInteger; import java.util.List; -import org.fisco.bcos.sdk.client.protocol.model.JsonTransactionResponse; -import org.fisco.bcos.sdk.client.protocol.response.BcosBlock; -import org.fisco.bcos.sdk.client.protocol.response.BcosGroupInfo.GroupInfo; -import org.fisco.bcos.sdk.client.protocol.response.BcosGroupNodeInfo.GroupNodeInfo; -import org.fisco.bcos.sdk.client.protocol.response.ConsensusStatus.ConsensusStatusInfo; -import org.fisco.bcos.sdk.client.protocol.response.Peers; -import org.fisco.bcos.sdk.client.protocol.response.SealerList.Sealer; -import org.fisco.bcos.sdk.client.protocol.response.SyncStatus.SyncStatusInfo; -import org.fisco.bcos.sdk.client.protocol.response.TotalTransactionCount.TransactionCountInfo; -import org.fisco.bcos.sdk.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.client.protocol.model.JsonTransactionResponse; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosBlock; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosGroupInfo.GroupInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosGroupNodeInfo.GroupNodeInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.ConsensusStatus.ConsensusStatusInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.Peers; +import org.fisco.bcos.sdk.v3.client.protocol.response.SealerList.Sealer; +import org.fisco.bcos.sdk.v3.client.protocol.response.SyncStatus.SyncStatusInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.TotalTransactionCount.TransactionCountInfo; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; diff --git a/src/main/java/com/webank/webase/front/web3api/Web3ApiService.java b/src/main/java/com/webank/webase/front/web3api/Web3ApiService.java index d54a4f21a..87ea61260 100644 --- a/src/main/java/com/webank/webase/front/web3api/Web3ApiService.java +++ b/src/main/java/com/webank/webase/front/web3api/Web3ApiService.java @@ -24,26 +24,26 @@ import java.time.Instant; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.fisco.bcos.sdk.BcosSDK; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.client.exceptions.ClientException; -import org.fisco.bcos.sdk.client.protocol.model.JsonTransactionResponse; -import org.fisco.bcos.sdk.client.protocol.response.BcosBlock; -import org.fisco.bcos.sdk.client.protocol.response.BcosBlock.Block; -import org.fisco.bcos.sdk.client.protocol.response.BcosGroupInfo.GroupInfo; -import org.fisco.bcos.sdk.client.protocol.response.BcosGroupNodeInfo.GroupNodeInfo; -import org.fisco.bcos.sdk.client.protocol.response.ConsensusStatus.ConsensusStatusInfo; -import org.fisco.bcos.sdk.client.protocol.response.GroupPeers; -import org.fisco.bcos.sdk.client.protocol.response.Peers; -import org.fisco.bcos.sdk.client.protocol.response.SealerList.Sealer; -import org.fisco.bcos.sdk.client.protocol.response.SyncStatus.PeersInfo; -import org.fisco.bcos.sdk.client.protocol.response.SyncStatus.SyncStatusInfo; -import org.fisco.bcos.sdk.client.protocol.response.TotalTransactionCount; -import org.fisco.bcos.sdk.client.protocol.response.TotalTransactionCount.TransactionCountInfo; -import org.fisco.bcos.sdk.config.exceptions.ConfigException; -import org.fisco.bcos.sdk.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.BcosSDK; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.client.exceptions.ClientException; +import org.fisco.bcos.sdk.v3.client.protocol.model.JsonTransactionResponse; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosBlock; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosBlock.Block; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosGroupInfo.GroupInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosGroupNodeInfo.GroupNodeInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.ConsensusStatus.ConsensusStatusInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.GroupPeers; +import org.fisco.bcos.sdk.v3.client.protocol.response.Peers; +import org.fisco.bcos.sdk.v3.client.protocol.response.SealerList.Sealer; +import org.fisco.bcos.sdk.v3.client.protocol.response.SyncStatus.PeersInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.SyncStatus.SyncStatusInfo; +import org.fisco.bcos.sdk.v3.client.protocol.response.TotalTransactionCount; +import org.fisco.bcos.sdk.v3.client.protocol.response.TotalTransactionCount.TransactionCountInfo; +import org.fisco.bcos.sdk.v3.config.exceptions.ConfigException; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; import org.fisco.bcos.sdk.jni.common.JniException; -import org.fisco.bcos.sdk.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/webank/webase/front/web3api/entity/TransactionInfo.java b/src/main/java/com/webank/webase/front/web3api/entity/TransactionInfo.java index f5ef72e99..3d37acd91 100644 --- a/src/main/java/com/webank/webase/front/web3api/entity/TransactionInfo.java +++ b/src/main/java/com/webank/webase/front/web3api/entity/TransactionInfo.java @@ -19,7 +19,7 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.ToString; -import org.fisco.bcos.sdk.client.protocol.model.JsonTransactionResponse; +import org.fisco.bcos.sdk.v3.client.protocol.model.JsonTransactionResponse; import org.springframework.beans.BeanUtils; @Data diff --git a/src/test/java/com/webank/webase/front/base/BasicTest.java b/src/test/java/com/webank/webase/front/base/BasicTest.java index 081a470d9..eda0a94d1 100644 --- a/src/test/java/com/webank/webase/front/base/BasicTest.java +++ b/src/test/java/com/webank/webase/front/base/BasicTest.java @@ -19,9 +19,9 @@ import static org.junit.Assert.assertTrue; import java.math.BigInteger; -import org.fisco.bcos.sdk.client.protocol.response.BcosBlock; -import org.fisco.bcos.sdk.client.protocol.response.BcosGroupList; -import org.fisco.bcos.sdk.client.protocol.response.Peers; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosBlock; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosGroupList; +import org.fisco.bcos.sdk.v3.client.protocol.response.Peers; import org.junit.Ignore; import org.junit.Test; diff --git a/src/test/java/com/webank/webase/front/base/TestBase.java b/src/test/java/com/webank/webase/front/base/TestBase.java index 866cbf474..42302c5b6 100644 --- a/src/test/java/com/webank/webase/front/base/TestBase.java +++ b/src/test/java/com/webank/webase/front/base/TestBase.java @@ -16,10 +16,10 @@ package com.webank.webase.front.base; import java.math.BigInteger; -import org.fisco.bcos.sdk.BcosSDK; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.BcosSDK; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -30,6 +30,7 @@ public class TestBase { protected static CryptoKeyPair cryptoKeyPair; protected static BigInteger chainId = new BigInteger("1"); protected static String groupId = "1"; + protected static String groupIdV3 = "group0"; protected static String address; protected static BigInteger blockNumber; @@ -40,12 +41,13 @@ public static void setUpBeforeClass() { // 绝对路径 String configFile = ".\\src\\test\\resources\\config-example.toml"; bcosSDK = BcosSDK.build(configFile); - web3j = bcosSDK.getClient(groupId); +// web3j = bcosSDK.getClient(groupId); + web3j = bcosSDK.getClient(groupIdV3); cryptoSuite = web3j.getCryptoSuite(); cryptoKeyPair = web3j.getCryptoSuite().getKeyPairFactory().createKeyPair("71f1479d9051e8d6b141a3b3ef9c01a7756da823a0af280c6bf62d18ee0cc978"); //todo deploy ok.sol - // blockHash = web3j.getBlockHashByNumber(blockNumber).getBlockHashByNumber(); + blockHash = web3j.getBlockHashByNumber(blockNumber).getBlockHashByNumber(); } } diff --git a/src/test/java/com/webank/webase/front/contract/WasmServiceTest.java b/src/test/java/com/webank/webase/front/contract/WasmServiceTest.java index 344dc7e6e..461f847b7 100644 --- a/src/test/java/com/webank/webase/front/contract/WasmServiceTest.java +++ b/src/test/java/com/webank/webase/front/contract/WasmServiceTest.java @@ -24,7 +24,7 @@ import com.webank.webase.front.transaction.TransService; import com.webank.webase.front.transaction.entity.ReqTransHandle; import com.webank.webase.front.util.JsonUtils; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/com/webank/webase/front/gm/pressure/PerformanceCollector.java b/src/test/java/com/webank/webase/front/gm/pressure/PerformanceCollector.java index 4c02bf98c..bffd95a37 100644 --- a/src/test/java/com/webank/webase/front/gm/pressure/PerformanceCollector.java +++ b/src/test/java/com/webank/webase/front/gm/pressure/PerformanceCollector.java @@ -2,7 +2,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; -import org.fisco.bcos.sdk.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/test/java/com/webank/webase/front/gm/pressure/PerformanceHelloWorldCallback.java b/src/test/java/com/webank/webase/front/gm/pressure/PerformanceHelloWorldCallback.java index 0acd8a1bd..ed55f0c50 100644 --- a/src/test/java/com/webank/webase/front/gm/pressure/PerformanceHelloWorldCallback.java +++ b/src/test/java/com/webank/webase/front/gm/pressure/PerformanceHelloWorldCallback.java @@ -2,8 +2,8 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; -import org.fisco.bcos.sdk.model.TransactionReceipt; -import org.fisco.bcos.sdk.model.callback.TransactionCallback; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.model.callback.TransactionCallback; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/test/java/com/webank/webase/front/keystore/KeyStoreFileTest.java b/src/test/java/com/webank/webase/front/keystore/KeyStoreFileTest.java index 1cb6483f3..99edd9bef 100644 --- a/src/test/java/com/webank/webase/front/keystore/KeyStoreFileTest.java +++ b/src/test/java/com/webank/webase/front/keystore/KeyStoreFileTest.java @@ -25,13 +25,13 @@ import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; import java.security.spec.InvalidKeySpecException; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -import org.fisco.bcos.sdk.crypto.keystore.KeyTool; -import org.fisco.bcos.sdk.crypto.keystore.P12KeyStore; -import org.fisco.bcos.sdk.crypto.keystore.PEMKeyStore; -import org.fisco.bcos.sdk.model.CryptoType; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.crypto.keystore.KeyTool; +import org.fisco.bcos.sdk.v3.crypto.keystore.P12KeyStore; +import org.fisco.bcos.sdk.v3.crypto.keystore.PEMKeyStore; +import org.fisco.bcos.sdk.v3.model.CryptoType; +import org.fisco.bcos.sdk.v3.utils.Numeric; import org.junit.Assert; import org.junit.Test; import org.springframework.core.io.ClassPathResource; diff --git a/src/test/java/com/webank/webase/front/keystore/SignDataTestBase.java b/src/test/java/com/webank/webase/front/keystore/SignDataTestBase.java index 63562655f..fbf6042c8 100644 --- a/src/test/java/com/webank/webase/front/keystore/SignDataTestBase.java +++ b/src/test/java/com/webank/webase/front/keystore/SignDataTestBase.java @@ -26,11 +26,11 @@ import com.webank.webase.front.util.JsonUtils; import com.webank.webase.front.web3api.Web3ApiService; import java.security.SignatureException; -import org.fisco.bcos.sdk.crypto.CryptoSuite; -import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair; -import org.fisco.bcos.sdk.crypto.signature.ECDSASignatureResult; -import org.fisco.bcos.sdk.crypto.signature.SM2SignatureResult; -import org.fisco.bcos.sdk.model.CryptoType; +import org.fisco.bcos.sdk.v3.crypto.CryptoSuite; +import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; +import org.fisco.bcos.sdk.v3.crypto.signature.ECDSASignatureResult; +import org.fisco.bcos.sdk.v3.crypto.signature.SM2SignatureResult; +import org.fisco.bcos.sdk.v3.model.CryptoType; import org.junit.Assert; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/test/java/com/webank/webase/front/monitor/ScheduledTest.java b/src/test/java/com/webank/webase/front/monitor/ScheduledTest.java index e1b45bee2..df957e49f 100644 --- a/src/test/java/com/webank/webase/front/monitor/ScheduledTest.java +++ b/src/test/java/com/webank/webase/front/monitor/ScheduledTest.java @@ -20,10 +20,10 @@ import com.webank.webase.front.web3api.Web3ApiService; import java.util.Date; import java.util.concurrent.ScheduledFuture; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.client.protocol.response.BlockNumber; -import org.fisco.bcos.sdk.client.protocol.response.PbftView; -import org.fisco.bcos.sdk.client.protocol.response.PendingTxSize; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.client.protocol.response.BlockNumber; +import org.fisco.bcos.sdk.v3.client.protocol.response.PbftView; +import org.fisco.bcos.sdk.v3.client.protocol.response.PendingTxSize; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; diff --git a/src/test/java/com/webank/webase/front/precntauth/CnsServiceTest.java b/src/test/java/com/webank/webase/front/precntauth/CnsServiceTest.java index a2778a476..95a47a1cb 100644 --- a/src/test/java/com/webank/webase/front/precntauth/CnsServiceTest.java +++ b/src/test/java/com/webank/webase/front/precntauth/CnsServiceTest.java @@ -17,10 +17,10 @@ import com.webank.webase.front.base.TestBase; import java.util.List; -import org.fisco.bcos.sdk.codec.datatypes.generated.tuples.generated.Tuple2; -import org.fisco.bcos.sdk.contract.precompiled.cns.CnsInfo; -import org.fisco.bcos.sdk.contract.precompiled.cns.CnsService; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSPrecompiled.BfsInfo; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSService; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.junit.Test; import org.springframework.context.ApplicationContext; @@ -34,7 +34,7 @@ public class CnsServiceTest extends TestBase { public static String version; public static String address; public static String abi; - // + @Test public void testRegCns() throws ContractException { contractName = "Evidence1"; @@ -42,14 +42,15 @@ public void testRegCns() throws ContractException { address = "0x8acf30e511c885163b8b9d85f34b806c216da6cc"; abi = "{\"constant\":true,\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"get\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\"},{\"name\":\"decription\",\"type\":\"string\"}],\"name\":\"set\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"evidence\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"; - CnsService cnsService = new CnsService(web3j, cryptoKeyPair); - System.out.println(cnsService.registerCNS(contractName, version, address, abi)); + BFSService cnsService = new BFSService(web3j, cryptoKeyPair); + System.out.println(cnsService.link(contractName, version, address, abi)); // 默认获取最新版本 - Tuple2 res = cnsService.selectByNameAndVersion(contractName, version); - List list = cnsService.selectByName(contractName); - System.out.println(res); + List list = cnsService.list("/apps/" + contractName); + List res = cnsService.list("/apps/" + contractName + "/" + version); + System.out.println(list); + System.out.println(res); } } diff --git a/src/test/java/com/webank/webase/front/precntauth/ConsensusServiceTest.java b/src/test/java/com/webank/webase/front/precntauth/ConsensusServiceTest.java index cb8ba3e68..3d6cbe9e7 100644 --- a/src/test/java/com/webank/webase/front/precntauth/ConsensusServiceTest.java +++ b/src/test/java/com/webank/webase/front/precntauth/ConsensusServiceTest.java @@ -18,8 +18,8 @@ import static org.junit.Assert.assertNotNull; import com.webank.webase.front.base.TestBase; -import org.fisco.bcos.sdk.contract.precompiled.consensus.ConsensusService; -import org.fisco.bcos.sdk.transaction.model.exception.ContractException; +import org.fisco.bcos.sdk.v3.contract.precompiled.consensus.ConsensusService; +import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; diff --git a/src/test/java/com/webank/webase/front/precntauth/CrudServiceTest.java b/src/test/java/com/webank/webase/front/precntauth/CrudServiceTest.java index 2d50fc221..7085c8659 100644 --- a/src/test/java/com/webank/webase/front/precntauth/CrudServiceTest.java +++ b/src/test/java/com/webank/webase/front/precntauth/CrudServiceTest.java @@ -31,12 +31,12 @@ //import java.util.List; //import java.util.Map; //import java.util.Set; -//import org.fisco.bcos.sdk.contract.precompiled.crud.TableCRUDService; -//import org.fisco.bcos.sdk.contract.precompiled.crud.common.Condition; -//import org.fisco.bcos.sdk.contract.precompiled.crud.common.ConditionOperator; -//import org.fisco.bcos.sdk.contract.precompiled.crud.common.Entry; -//import org.fisco.bcos.sdk.model.PrecompiledConstant; -//import org.fisco.bcos.sdk.model.RetCode; +//import org.fisco.bcos.sdk.v3.contract.precompiled.crud.TableCRUDService; +//import org.fisco.bcos.sdk.v3.contract.precompiled.crud.common.Condition; +//import org.fisco.bcos.sdk.v3.contract.precompiled.crud.common.ConditionOperator; +//import org.fisco.bcos.sdk.v3.contract.precompiled.crud.common.Entry; +//import org.fisco.bcos.sdk.v3.model.PrecompiledConstant; +//import org.fisco.bcos.sdk.v3.model.RetCode; //import org.junit.Test; //import org.springframework.context.ApplicationContext; // diff --git a/src/test/java/com/webank/webase/front/precntauth/PrecompiledSysConfigServiceTest.java b/src/test/java/com/webank/webase/front/precntauth/PrecompiledSysConfigServiceTest.java index 7ebf082d4..ee3fa6538 100644 --- a/src/test/java/com/webank/webase/front/precntauth/PrecompiledSysConfigServiceTest.java +++ b/src/test/java/com/webank/webase/front/precntauth/PrecompiledSysConfigServiceTest.java @@ -18,7 +18,7 @@ import static org.junit.Assert.assertNotNull; import com.webank.webase.front.base.TestBase; -import org.fisco.bcos.sdk.contract.precompiled.sysconfig.SystemConfigService; +import org.fisco.bcos.sdk.v3.contract.precompiled.sysconfig.SystemConfigService; import org.junit.Test; import org.springframework.context.ApplicationContext; diff --git a/src/test/java/com/webank/webase/front/util/ContractAbiUtilTest.java b/src/test/java/com/webank/webase/front/util/ContractAbiUtilTest.java index 3c9227f92..29b59c7fc 100644 --- a/src/test/java/com/webank/webase/front/util/ContractAbiUtilTest.java +++ b/src/test/java/com/webank/webase/front/util/ContractAbiUtilTest.java @@ -24,14 +24,14 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import org.fisco.bcos.sdk.client.Client; -import org.fisco.bcos.sdk.codec.ABICodec; -import org.fisco.bcos.sdk.codec.datatypes.Function; -import org.fisco.bcos.sdk.codec.datatypes.Type; -import org.fisco.bcos.sdk.codec.datatypes.TypeReference; -import org.fisco.bcos.sdk.codec.wrapper.ABIDefinition; -import org.fisco.bcos.sdk.contract.precompiled.cns.CnsService; -import org.fisco.bcos.sdk.model.RetCode; +import org.fisco.bcos.sdk.v3.client.Client; +import org.fisco.bcos.sdk.v3.codec.ContractCodec; +import org.fisco.bcos.sdk.v3.codec.datatypes.Function; +import org.fisco.bcos.sdk.v3.codec.datatypes.Type; +import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; +import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition; +import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSService; +import org.fisco.bcos.sdk.v3.model.RetCode; import org.junit.Test; public class ContractAbiUtilTest extends TestBase { @@ -44,7 +44,7 @@ public void testDepolyContract() throws Exception { String version = "2.0"; List abiList = ContractAbiUtil.loadContractDefinition(new File("src/test/resources/solidity/Ok.abi")); ContractAbiUtil.setContractWithAbi(contractName, version, abiList, false); - ABICodec abiCodec = new ABICodec(cryptoSuite, false); + ContractCodec abiCodec = new ContractCodec(cryptoSuite, false); String bytecodeBin = "608060405234801561001057600080fd5b5060016000800160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506402540be40060006001018190555060028060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006002600101819055506103bf806100c26000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806366c99139146100515780636d4ce63c1461007e575b600080fd5b34801561005d57600080fd5b5061007c600480360381019080803590602001909291905050506100a9565b005b34801561008a57600080fd5b506100936102e1565b6040518082815260200191505060405180910390f35b8060006001015410806100c757506002600101548160026001015401105b156100d1576102de565b8060006001015403600060010181905550806002600101600082825401925050819055507fc77b710b83d1dc3f3fafeccd08a6c469beb873b2f0975b50d1698e46b3ee5b4c816040518082815260200191505060405180910390a160046080604051908101604052806040805190810160405280600881526020017f323031373034313300000000000000000000000000000000000000000000000081525081526020016000800160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152509080600181540180825580915050906001820390600052602060002090600402016000909192909190915060008201518160000190805190602001906102419291906102ee565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606082015181600301555050505b50565b6000600260010154905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061032f57805160ff191683800117855561035d565b8280016001018555821561035d579182015b8281111561035c578251825591602001919060010190610341565b5b50905061036a919061036e565b5090565b61039091905b8082111561038c576000816000905550600101610374565b5090565b905600a165627a7a72305820044e82d74a0d492f9f764e8bbf8eeca940eee670c9ab7bba9861db1d522ab6400029"; byte[] encodedConstructor = abiCodec @@ -54,8 +54,8 @@ public void testDepolyContract() throws Exception { commonContract = CommonContract.deploy(web3j, cryptoKeyPair, bytecodeBin, encodedConstructor); System.out.println(commonContract.getContractAddress()); - CnsService cnsService = new CnsService(web3j, cryptoKeyPair); - RetCode result = cnsService.registerCNS(contractName ,version,commonContract.getContractAddress(),"[{\"constant\":false,\"inputs\":[{\"name\":\"num\",\"type\":\"uint256\"}],\"name\":\"trans\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"get\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"num\",\"type\":\"uint256\"}],\"name\":\"TransEvent\",\"type\":\"event\"}]"); + BFSService cnsService = new BFSService(web3j, cryptoKeyPair); + RetCode result = cnsService.link(contractName ,version,commonContract.getContractAddress(),"[{\"constant\":false,\"inputs\":[{\"name\":\"num\",\"type\":\"uint256\"}],\"name\":\"trans\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"get\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"num\",\"type\":\"uint256\"}],\"name\":\"TransEvent\",\"type\":\"event\"}]"); System.out.println(result); } diff --git a/src/test/java/com/webank/webase/front/util/TransactionEncoderTest.java b/src/test/java/com/webank/webase/front/util/TransactionEncoderTest.java index 3d910d3b2..c9d450d22 100644 --- a/src/test/java/com/webank/webase/front/util/TransactionEncoderTest.java +++ b/src/test/java/com/webank/webase/front/util/TransactionEncoderTest.java @@ -6,12 +6,10 @@ import com.webank.webase.front.base.TestBase; import java.math.BigInteger; import java.nio.charset.StandardCharsets; -import org.fisco.bcos.sdk.client.protocol.model.tars.TransactionData; -import org.fisco.bcos.sdk.codec.datatypes.generated.Bytes32; -import org.fisco.bcos.sdk.crypto.signature.SignatureResult; -import org.fisco.bcos.sdk.transaction.builder.TransactionBuilderService; -import org.fisco.bcos.sdk.transaction.codec.encode.TransactionEncoderService; -import org.fisco.bcos.sdk.utils.Numeric; +import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Bytes32; +import org.fisco.bcos.sdk.v3.crypto.signature.SignatureResult; +import org.fisco.bcos.sdk.v3.transaction.codec.encode.TransactionEncoderService; +import org.fisco.bcos.sdk.v3.utils.Numeric; import org.junit.Test; public class TransactionEncoderTest extends TestBase { diff --git a/src/test/java/com/webank/webase/front/web3j/SolidityTypeTest.java b/src/test/java/com/webank/webase/front/web3j/SolidityTypeTest.java index 60f7b53e3..8e4571424 100644 --- a/src/test/java/com/webank/webase/front/web3j/SolidityTypeTest.java +++ b/src/test/java/com/webank/webase/front/web3j/SolidityTypeTest.java @@ -36,7 +36,7 @@ // //import java.math.BigInteger; //import org.bouncycastle.util.encoders.Hex; -//import org.fisco.bcos.sdk.codec.datatypes.generated.Uint256; +//import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Uint256; //import org.fisco.bcos.web3j.solidity.SolidityType; //import org.junit.Test; // diff --git a/src/test/java/com/webank/webase/front/web3j/Web3jApITest.java b/src/test/java/com/webank/webase/front/web3j/Web3jApITest.java index ca79ffc92..211cbb803 100644 --- a/src/test/java/com/webank/webase/front/web3j/Web3jApITest.java +++ b/src/test/java/com/webank/webase/front/web3j/Web3jApITest.java @@ -20,22 +20,22 @@ import com.webank.webase.front.base.TestBase; import java.math.BigInteger; -import org.fisco.bcos.sdk.client.protocol.response.BcosBlock; -import org.fisco.bcos.sdk.client.protocol.response.BcosGroupList; -import org.fisco.bcos.sdk.client.protocol.response.BcosTransaction; -import org.fisco.bcos.sdk.client.protocol.response.BcosTransactionReceipt; -import org.fisco.bcos.sdk.client.protocol.response.BlockNumber; -import org.fisco.bcos.sdk.client.protocol.response.Code; -import org.fisco.bcos.sdk.client.protocol.response.ConsensusStatus; -import org.fisco.bcos.sdk.client.protocol.response.ObserverList; -import org.fisco.bcos.sdk.client.protocol.response.PbftView; -import org.fisco.bcos.sdk.client.protocol.response.Peers; -import org.fisco.bcos.sdk.client.protocol.response.PendingTxSize; -import org.fisco.bcos.sdk.client.protocol.response.SealerList; -import org.fisco.bcos.sdk.client.protocol.response.SyncStatus; -import org.fisco.bcos.sdk.client.protocol.response.SystemConfig; -import org.fisco.bcos.sdk.client.protocol.response.TotalTransactionCount; -import org.fisco.bcos.sdk.model.TransactionReceipt; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosBlock; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosGroupList; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosTransaction; +import org.fisco.bcos.sdk.v3.client.protocol.response.BcosTransactionReceipt; +import org.fisco.bcos.sdk.v3.client.protocol.response.BlockNumber; +import org.fisco.bcos.sdk.v3.client.protocol.response.Code; +import org.fisco.bcos.sdk.v3.client.protocol.response.ConsensusStatus; +import org.fisco.bcos.sdk.v3.client.protocol.response.ObserverList; +import org.fisco.bcos.sdk.v3.client.protocol.response.PbftView; +import org.fisco.bcos.sdk.v3.client.protocol.response.Peers; +import org.fisco.bcos.sdk.v3.client.protocol.response.PendingTxSize; +import org.fisco.bcos.sdk.v3.client.protocol.response.SealerList; +import org.fisco.bcos.sdk.v3.client.protocol.response.SyncStatus; +import org.fisco.bcos.sdk.v3.client.protocol.response.SystemConfig; +import org.fisco.bcos.sdk.v3.client.protocol.response.TotalTransactionCount; +import org.fisco.bcos.sdk.v3.model.TransactionReceipt; import org.junit.Ignore; import org.junit.Test; diff --git a/src/test/resources/applicationContext.xml b/src/test/resources/applicationContext.xml deleted file mode 100644 index 2ec03a1b3..000000000 --- a/src/test/resources/applicationContext.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - 127.0.0.1:20200 - - - - - - - - - - - - - - From af30366c01d2b6cd047f38460c6ecd5933b99dad Mon Sep 17 00:00:00 2001 From: CodingCattwo <847701726@qq.com> Date: Tue, 2 Aug 2022 19:18:18 +0800 Subject: [PATCH 02/18] fix checkdeploy auth --- build.gradle | 22 +++++-------------- release_note.txt | 2 +- .../front/contract/ContractService.java | 1 + .../authmanager/everyone/EveryoneService.java | 7 +++++- 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/build.gradle b/build.gradle index 8f6da9360..db15016cb 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ repositories { } -def spring_version="5.2.20.RELEASE" +def spring_version="5.2.22.RELEASE" List spring =[ "org.springframework:spring-core:$spring_version", "org.springframework:spring-beans:$spring_version", @@ -57,7 +57,7 @@ List swagger = [ ] -def log4j_version="2.17.1" +def log4j_version="2.18.0" List logger = [ "org.apache.logging.log4j:log4j-api:$log4j_version", "org.apache.logging.log4j:log4j-core:$log4j_version", @@ -72,24 +72,14 @@ List jaxb = [ "javax.activation:activation:1.1.1" ] -def jackson_version = "2.13.2" +def jackson_version = "2.13.3" List jackson = [ "com.fasterxml.jackson.core:jackson-annotations:$jackson_version", "com.fasterxml.jackson.core:jackson-core:$jackson_version", -// "com.fasterxml.jackson.core:jackson-databind:$jackson_version", - "com.fasterxml.jackson.core:jackson-databind:2.13.2.2", + "com.fasterxml.jackson.core:jackson-databind:$jackson_version", "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version" ] -// cover old version -def tomcat_version = "8.5.56" -List tomcat = [ - "org.apache.tomcat.embed:tomcat-embed-core:$tomcat_version", - "org.apache.tomcat.embed:tomcat-embed-el:$tomcat_version", - "org.apache.tomcat.embed:tomcat-embed-websocket:$tomcat_version", - "org.apache.tomcat:tomcat-jdbc:$tomcat_version", - "org.apache.tomcat:tomcat-juli:$tomcat_version" -] List scaffold = [ 'com.webank.webase:solscaffold:1.0.2', @@ -98,7 +88,7 @@ List scaffold = [ ] dependencies { - compile spring,spring_boot,swagger,logger,jaxb,jackson,tomcat,scaffold + compile spring,spring_boot,swagger,logger,jaxb,jackson,scaffold compile ('org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:3.0.0-rc4') // cover compile 'javax.servlet:javax.servlet-api:4.0.1' @@ -116,7 +106,7 @@ dependencies { compile 'org.yaml:snakeyaml:1.30' compile 'javax.validation:validation-api:2.0.1.Final' - testCompile('org.springframework.boot:spring-boot-starter-test') { + testCompile('org.springframework.boot:spring-boot-starter-test:$spring_boot_version') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } testCompile 'junit:junit:4.12', diff --git a/release_note.txt b/release_note.txt index 4eef80bd6..1c5ae5820 100644 --- a/release_note.txt +++ b/release_note.txt @@ -1 +1 @@ -lab-rc2 \ No newline at end of file +v3.0.0 \ No newline at end of file diff --git a/src/main/java/com/webank/webase/front/contract/ContractService.java b/src/main/java/com/webank/webase/front/contract/ContractService.java index e0aa83346..adebe4387 100644 --- a/src/main/java/com/webank/webase/front/contract/ContractService.java +++ b/src/main/java/com/webank/webase/front/contract/ContractService.java @@ -970,6 +970,7 @@ private boolean checkDeployPermission(String groupId, String userAddress) return true; } Boolean res = everyoneService.checkDeployAuth(groupId, userAddress); + // todo if res, throw log.info("check deploy permission result is {}", res.toString()); return res; } diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java index 412160229..c4293a4bc 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java @@ -128,7 +128,12 @@ public BigInteger queryDeployAuthType(String groupId) public boolean checkDeployAuth(String groupId, String userAddress) throws ContractException { AuthManager authManager = authManagerService.getAuthManagerService(groupId); - return authManager.checkDeployAuth(userAddress); + try { + return authManager.checkDeployAuth(userAddress); + } catch (ContractException ex) { + log.error("checkDeployAuth error:{}", ex.getMessage()); + } + return true; } /** From 0530a5ac12774e35e7d8786c198134e26b4ba878 Mon Sep 17 00:00:00 2001 From: CodingCattwo <847701726@qq.com> Date: Wed, 3 Aug 2022 15:11:50 +0800 Subject: [PATCH 03/18] add contract freeze --- .../authmanager/admin/AdminController.java | 18 +++++++ .../authmanager/admin/AdminService.java | 25 +++++++++ .../admin/entity/ReqContractStatus.java | 25 +++++++++ .../everyone/EveryoneController.java | 15 ++++++ .../authmanager/everyone/EveryoneService.java | 9 ++++ .../base/PrecompiledCommonInfo.java | 6 --- .../sysconf/SysConfigServiceInWebase.java | 51 ++----------------- 7 files changed, 97 insertions(+), 52 deletions(-) create mode 100644 src/main/java/com/webank/webase/front/precntauth/authmanager/admin/entity/ReqContractStatus.java diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminController.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminController.java index d312c4f73..1c059ac6f 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminController.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminController.java @@ -15,6 +15,7 @@ import com.webank.webase.front.precntauth.authmanager.admin.entity.ReqAclAuthTypeInfo; import com.webank.webase.front.precntauth.authmanager.admin.entity.ReqAclUsrInfo; +import com.webank.webase.front.precntauth.authmanager.admin.entity.ReqContractStatus; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiOperation; @@ -75,4 +76,21 @@ public Object setMethodAuth(@Valid @RequestBody ReqAclUsrInfo reqAclUsrInfo) } + /** + * 冻结、解冻合约 + * openMethodAuth contractAdd(0xCcEeF68C9b4811b32c75df284a1396C7C5509561) set(string) accountAdd(0x7fb008862ff69353a02ddabbc6cb7dc31683d0f6) + */ + @ApiOperation(value = "set contract status") + @ApiImplicitParam(name = "reqContractStatus", value = "contract status info", required = true, dataType = "ReqContractStatus") + @PostMapping("contract/status/set") + public String setContractStatus(@Valid @RequestBody ReqContractStatus reqContractStatus) { + String groupId = reqContractStatus.getGroupId(); + String contractAddr = reqContractStatus.getContractAddr(); + String signUserId = reqContractStatus.getSignUserId(); + Boolean isFreeze = reqContractStatus.getIsFreeze(); + String res = adminService.setContractStatus(groupId, signUserId, contractAddr, isFreeze); + return res; + } + + } diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java index a85d50fa8..37368a252 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java @@ -15,7 +15,10 @@ import static org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled.FUNC_CLOSEMETHODAUTH; import static org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled.FUNC_OPENMETHODAUTH; +import static org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled.FUNC_SETCONTRACTSTATUS; import static org.fisco.bcos.sdk.v3.contract.auth.contracts.ContractAuthPrecompiled.FUNC_SETMETHODAUTHTYPE; +import static org.fisco.bcos.sdk.v3.contract.precompiled.sysconfig.SystemConfigPrecompiled.FUNC_SETVALUEBYKEY; + import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.enums.PrecompiledTypes; import com.webank.webase.front.base.exception.FrontException; @@ -115,6 +118,28 @@ public Object setMethodAuthHandle(String groupId, String signUserId, String cont return this.handleRetcodeAndReceipt(receipt, false); } + + public String setContractStatus(String groupId, String signUserId, + String contractAddress, boolean isFreeze) { + + List funcParams = new ArrayList<>(); + funcParams.add(contractAddress); + funcParams.add(isFreeze); + // get address and abi of precompiled contract + String precompiledAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CONTRACT_AUTH); + boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); + if (isWasm) { + throw new FrontException(ConstantCode.EXEC_ENV_IS_WASM); + } + String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CONTRACT_AUTH); + // execute set method + TransactionReceipt receipt = + (TransactionReceipt) transService.transHandleWithSign(groupId, + signUserId, precompiledAddress, abiStr, FUNC_SETCONTRACTSTATUS, funcParams); + return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); + } + + public String handleRetcodeAndReceipt(TransactionReceipt receipt, boolean isWasm) { if (receipt.getStatus() == 16) { RetCode sdkRetCode = new RetCode(); diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/entity/ReqContractStatus.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/entity/ReqContractStatus.java new file mode 100644 index 000000000..1edd66a09 --- /dev/null +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/entity/ReqContractStatus.java @@ -0,0 +1,25 @@ +/** + * Copyright 2014-2021 the original author or authors. + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ + +package com.webank.webase.front.precntauth.authmanager.admin.entity; + +import lombok.Data; + +@Data +public class ReqContractStatus { + private String groupId; + private String signUserId; + private String contractAddr; + private Boolean isFreeze; +} diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java index fdcb72925..37b5846a0 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java @@ -116,4 +116,19 @@ public Boolean checkMethodAuth(@Valid @RequestBody ReqCheckMethodAuthInfo reqChe reqCheckMethodAuthInfo.getUserAddress()); } + + /** + * 查询某用户地址对合约函数的访问是否有权限 + */ + @ApiOperation(value = "query the contract address whether available") + @ApiImplicitParam(name = "reqContractAdminInfo", value = "contractAdmin info", required = true, + dataType = "ReqContractAdminInfo") + @PostMapping("contract/status") + public Boolean checkContractAvailable(@Valid @RequestBody ReqContractAdminInfo reqContractAdminInfo) + throws ContractException { + return everyoneService.isContractAvailable(reqContractAdminInfo.getGroupId(), + reqContractAdminInfo.getContractAddr()); + } + + } \ No newline at end of file diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java index c4293a4bc..6fc3e3e8b 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java @@ -157,4 +157,13 @@ public String queryAdmin(String groupId, String contractAddr) AuthManager authManager = authManagerService.getAuthManagerService(groupId); return authManager.getAdmin(contractAddr); } + + /** + * 获取合约是否被冻结, true: available, 即not frozen + */ + public Boolean isContractAvailable(String groupId, String contractAddr) + throws ContractException { + AuthManager authManager = authManagerService.getAuthManagerService(groupId); + return authManager.contractAvailable(contractAddr); + } } diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledCommonInfo.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledCommonInfo.java index 71a2e23ce..1d1fd6b1a 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledCommonInfo.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/base/PrecompiledCommonInfo.java @@ -48,10 +48,6 @@ public static String getAddress(PrecompiledTypes types) { return PrecompiledAddress.CONSENSUS_PRECOMPILED_ADDRESS; case CONSENSUS_LIQUID: return PrecompiledAddress.CONSENSUS_PRECOMPILED_NAME; -// case CNS: -// return PrecompiledAddress.CNS_PRECOMPILED_ADDRESS; -// case CNS_LIQUID: -// return PrecompiledAddress.CNS_PRECOMPILED_NAME; case BFS: return PrecompiledAddress.BFS_PRECOMPILED_ADDRESS; case BFS_LIQUID: @@ -73,8 +69,6 @@ public static String getAbi(PrecompiledTypes types) { return KVTablePrecompiled.ABI; case CONSENSUS: return ConsensusPrecompiled.ABI; -// case CNS: -// return CNSPrecompiled.ABI; case CONTRACT_AUTH: return ContractAuthPrecompiled.ABI; case BFS: diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/sysconf/SysConfigServiceInWebase.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/sysconf/SysConfigServiceInWebase.java index d7f148535..818aeb98c 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/sysconf/SysConfigServiceInWebase.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/sysconf/SysConfigServiceInWebase.java @@ -18,8 +18,6 @@ import com.webank.webase.front.base.code.ConstantCode; import com.webank.webase.front.base.enums.PrecompiledTypes; -import com.webank.webase.front.base.exception.FrontException; -import com.webank.webase.front.base.response.BaseResponse; import com.webank.webase.front.precntauth.precompiled.base.PrecompiledCommonInfo; import com.webank.webase.front.precntauth.precompiled.sysconf.entity.ReqQuerySysConfigInfo; import com.webank.webase.front.precntauth.precompiled.sysconf.entity.ReqSetSysConfigInfo; @@ -27,20 +25,10 @@ import com.webank.webase.front.util.PrecompiledUtils; import com.webank.webase.front.web3api.Web3ApiService; import java.io.IOException; -import java.math.BigInteger; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import lombok.extern.slf4j.Slf4j; -import org.fisco.bcos.sdk.v3.codec.FunctionReturnDecoderInterface; -import org.fisco.bcos.sdk.v3.codec.Utils; -import org.fisco.bcos.sdk.v3.codec.datatypes.Type; -import org.fisco.bcos.sdk.v3.codec.datatypes.TypeReference; -import org.fisco.bcos.sdk.v3.codec.datatypes.generated.Int32; -import org.fisco.bcos.sdk.v3.model.RetCode; import org.fisco.bcos.sdk.v3.model.TransactionReceipt; -import org.fisco.bcos.sdk.v3.transaction.codec.decode.ReceiptParser; -import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -102,9 +90,9 @@ public Object setSysConfigValueByKey(ReqSetSysConfigInfo reqSetSysConfigInfo) { // check system value // check gas limit - if (PrecompiledUtils.TxGasLimit.equals(key)) { - if (Long.parseLong(value) < PrecompiledUtils.TxGasLimitMin || - Long.parseLong(value) > PrecompiledUtils.TxGasLimitMax) { + if (com.webank.webase.front.util.PrecompiledUtils.TxGasLimit.equals(key)) { + if (Long.parseLong(value) < com.webank.webase.front.util.PrecompiledUtils.TxGasLimitMin || + Long.parseLong(value) > com.webank.webase.front.util.PrecompiledUtils.TxGasLimitMax) { return ConstantCode.SET_SYSTEM_CONFIG_GAS_RANGE_ERROR; } } @@ -132,7 +120,8 @@ public String setValueByKey(String groupId, String signUserId, String key, Strin TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, contractAddress, abiStr, FUNC_SETVALUEBYKEY, funcParams, isWasm); - return this.handleTransactionReceipt(receipt, isWasm); + return com.webank.webase.front.precntauth.precompiled.base.PrecompiledUtils + .handleTransactionReceipt(receipt, isWasm); } public String getSysConfigByKey(String groupId, String key) { @@ -141,34 +130,4 @@ public String getSysConfigByKey(String groupId, String key) { return result; } - private String handleTransactionReceipt(TransactionReceipt receipt, boolean isWasm) { - log.debug("handle tx receipt of precompiled"); - try { - RetCode sdkRetCode = ReceiptParser.parseTransactionReceipt( - receipt, - tr -> { - FunctionReturnDecoderInterface decoderInterface = - isWasm - ? new org.fisco.bcos.sdk.v3.codec.scale.FunctionReturnDecoder() - : new org.fisco.bcos.sdk.v3.codec.abi.FunctionReturnDecoder(); - List decode = - decoderInterface.decode( - tr.getOutput(), - Utils.convert( - Collections.singletonList( - new TypeReference() {}))); - return (BigInteger) decode.get(0).getValue(); - }); - log.info("handleTransactionReceipt sdkRetCode:{}", sdkRetCode); - if (sdkRetCode.getCode() >= 0) { - return new BaseResponse(ConstantCode.RET_SUCCESS, - sdkRetCode.getMessage()).toString(); - } else { - throw new FrontException(sdkRetCode.getCode(), sdkRetCode.getMessage()); - } - } catch (ContractException e) { - log.error("handleTransactionReceipt e:[]", e); - throw new FrontException(e.getErrorCode(), e.getMessage()); - } - } } From 005077abfd0f52946de6eb7617554df784999938 Mon Sep 17 00:00:00 2001 From: CodingCattwo <847701726@qq.com> Date: Wed, 3 Aug 2022 15:31:11 +0800 Subject: [PATCH 04/18] add auth check --- build.gradle | 4 +++- .../webank/webase/front/base/code/ConstantCode.java | 1 + .../precntauth/authmanager/admin/AdminService.java | 13 +++++++------ .../authmanager/base/AuthMgrBaseController.java | 2 +- .../authmanager/everyone/EveryoneService.java | 5 +++++ 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/build.gradle b/build.gradle index db15016cb..5fddc17da 100644 --- a/build.gradle +++ b/build.gradle @@ -47,7 +47,9 @@ List spring_boot =[ "org.springframework.boot:spring-boot-autoconfigure:$spring_boot_version", "org.springframework.boot:spring-boot-configuration-processor:$spring_boot_version", "org.springframework.boot:spring-boot-starter-data-jpa:$spring_boot_version", - "org.springframework.boot:spring-boot-starter-amqp:$spring_boot_version" + "org.springframework.boot:spring-boot-starter-amqp:$spring_boot_version", + "org.springframework.boot:spring-boot-starter-validation:$spring_boot_version" + ] diff --git a/src/main/java/com/webank/webase/front/base/code/ConstantCode.java b/src/main/java/com/webank/webase/front/base/code/ConstantCode.java index e4b41a1b6..caf1caf9a 100644 --- a/src/main/java/com/webank/webase/front/base/code/ConstantCode.java +++ b/src/main/java/com/webank/webase/front/base/code/ConstantCode.java @@ -286,6 +286,7 @@ public class ConstantCode { public static final RetCode EXEC_ENV_IS_WASM = RetCode.mark(201670, "exec env is wasm, don't support"); public static final RetCode MUST_BE_GOVERNOR = RetCode.mark(201671, "the account must be the governor."); public static final RetCode MUST_BE_PROPOSER = RetCode.mark(201672, "the account must be the proposer of proposal."); + public static final RetCode CHAIN_AUTH_NOT_ENABLE = RetCode.mark(201673, "auth of the chain not enable"); /* bfs path */ public static final RetCode BFS_INVALID_PATH = RetCode.mark(201680, "the PATH is invalid."); diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java index 37368a252..4097bd838 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/admin/AdminService.java @@ -59,8 +59,7 @@ public class AdminService { * set contract acl: white_list(type=1) or black_list(type=2) */ public Object setMethodAuthType(String groupId, String signUserId, String contractAddr, - byte[] func, BigInteger authType) - throws ContractException { + byte[] func, BigInteger authType) { return this.setMethodAuthTypeHandle(groupId, signUserId, contractAddr, func, authType); } @@ -93,7 +92,7 @@ public Object setMethodAuth(String groupId, String signUserId, String contractAd } public Object setMethodAuthHandle(String groupId, String signUserId, String contractAddr, - byte[] func, String accountAddress, Boolean bool) throws ContractException { + byte[] func, String accountAddress, Boolean bool) { TransactionReceipt receipt; List funcParams = new ArrayList<>(); funcParams.add(contractAddr); @@ -127,8 +126,10 @@ public String setContractStatus(String groupId, String signUserId, funcParams.add(isFreeze); // get address and abi of precompiled contract String precompiledAddress = PrecompiledCommonInfo.getAddress(PrecompiledTypes.CONTRACT_AUTH); - boolean isWasm = web3ApiService.getWeb3j(groupId).isWASM(); - if (isWasm) { + if (!web3ApiService.getWeb3j(groupId).isAuthCheck()) { + throw new FrontException(ConstantCode.CHAIN_AUTH_NOT_ENABLE); + } + if (web3ApiService.getWeb3j(groupId).isWASM()) { throw new FrontException(ConstantCode.EXEC_ENV_IS_WASM); } String abiStr = PrecompiledCommonInfo.getAbi(PrecompiledTypes.CONTRACT_AUTH); @@ -136,7 +137,7 @@ public String setContractStatus(String groupId, String signUserId, TransactionReceipt receipt = (TransactionReceipt) transService.transHandleWithSign(groupId, signUserId, precompiledAddress, abiStr, FUNC_SETCONTRACTSTATUS, funcParams); - return PrecompiledUtils.handleTransactionReceipt(receipt, isWasm); + return PrecompiledUtils.handleTransactionReceipt(receipt, false); } diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseController.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseController.java index 931ce2135..0af0c9e1a 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseController.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/base/AuthMgrBaseController.java @@ -29,7 +29,7 @@ public Boolean queryExecEnvIsWasm(String groupId) { @ApiOperation(value = "query if node support wasm") @ApiImplicitParam(name = "groupId", value = "groupId info", required = true) @GetMapping("queryChainHasAuth") - public Boolean queryChainHasAuth(String groupId) throws ContractException { + public Boolean queryChainHasAuth(String groupId) { return authMgrService.chainHasAuth(groupId); } diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java index 6fc3e3e8b..890f6659b 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java @@ -13,6 +13,8 @@ */ package com.webank.webase.front.precntauth.authmanager.everyone; +import com.webank.webase.front.base.code.ConstantCode; +import com.webank.webase.front.base.exception.FrontException; import com.webank.webase.front.precntauth.authmanager.everyone.entity.NewProposalInfo; import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqProposalListInfo; import com.webank.webase.front.precntauth.authmanager.util.AuthManagerService; @@ -163,6 +165,9 @@ public String queryAdmin(String groupId, String contractAddr) */ public Boolean isContractAvailable(String groupId, String contractAddr) throws ContractException { + if (!web3ApiService.getWeb3j(groupId).isAuthCheck()) { + throw new FrontException(ConstantCode.CHAIN_AUTH_NOT_ENABLE); + } AuthManager authManager = authManagerService.getAuthManagerService(groupId); return authManager.contractAvailable(contractAddr); } From 11cab494b88c73898edbde653cc8363d6690d7d7 Mon Sep 17 00:00:00 2001 From: CodingCattwo <847701726@qq.com> Date: Fri, 5 Aug 2022 11:06:21 +0800 Subject: [PATCH 05/18] fix address null --- build.gradle | 1 + .../java/com/webank/webase/front/contract/ContractService.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 5fddc17da..7670701a2 100644 --- a/build.gradle +++ b/build.gradle @@ -101,6 +101,7 @@ dependencies { compile 'org.projectlombok:lombok:1.18.6' compile 'com.github.jsqlparser:jsqlparser:2.0' compile 'org.apache.commons:commons-lang3:3.8.1' + compile 'org.apache.commons:commons-configuration2:2.8.0' // cover low version compile 'org.slf4j:jcl-over-slf4j:1.7.30' diff --git a/src/main/java/com/webank/webase/front/contract/ContractService.java b/src/main/java/com/webank/webase/front/contract/ContractService.java index adebe4387..3f0ae6335 100644 --- a/src/main/java/com/webank/webase/front/contract/ContractService.java +++ b/src/main/java/com/webank/webase/front/contract/ContractService.java @@ -253,7 +253,7 @@ public String deployWithSign(ReqDeploy req) { String bytecodeBin = req.getBytecodeBin(); List params = req.getFuncParam() == null ? new ArrayList<>() : req.getFuncParam(); boolean isWasm = req.getIsWasm() != null && req.getIsWasm(); - String liquidAddress = null; + String liquidAddress = ""; if (isWasm) { liquidAddress = req.getContractAddress(); if (StringUtils.isBlank(liquidAddress)) { From c7576392b14e92786194658e97150b5624d8c961 Mon Sep 17 00:00:00 2001 From: CodingCattwo <847701726@qq.com> Date: Tue, 9 Aug 2022 17:34:22 +0800 Subject: [PATCH 06/18] update 3.0 sdk & fit in cns info --- build.gradle | 6 +++- .../front/contract/ContractService.java | 11 ++++--- .../everyone/EveryoneController.java | 15 +++++++++ .../authmanager/everyone/EveryoneService.java | 23 ++++++++++++++ .../entity/ReqContractStatusList.java | 31 +++++++++++++++++++ .../precompiled/cns/CNSServiceInWebase.java | 13 ++++++-- .../precompiled/cns/entity/CnsInfo.java | 29 +++++++++++++++++ .../front/transaction/TransService.java | 2 +- 8 files changed, 122 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/entity/ReqContractStatusList.java create mode 100644 src/main/java/com/webank/webase/front/precntauth/precompiled/cns/entity/CnsInfo.java diff --git a/build.gradle b/build.gradle index 7670701a2..27114920f 100644 --- a/build.gradle +++ b/build.gradle @@ -91,11 +91,15 @@ List scaffold = [ dependencies { compile spring,spring_boot,swagger,logger,jaxb,jackson,scaffold - compile ('org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:3.0.0-rc4') + compile ('org.fisco-bcos.java-sdk:fisco-bcos-java-sdk:3.0.0-SNAPSHOT') // cover compile 'javax.servlet:javax.servlet-api:4.0.1' // support guomi/ecdsa same time, support solcJ-0.5.2 compile 'org.fisco-bcos:solcJ:0.4.25-rc1' + compile('org.fisco-bcos.code-generator:bcos-code-generator:1.0.0-SNAPSHOT') { + exclude group: "org.fisco-bcos.java-sdk" + exclude group: "org.slf4j" + } compile 'com.h2database:h2:1.4.200' annotationProcessor 'org.projectlombok:lombok:1.18.6' compile 'org.projectlombok:lombok:1.18.6' diff --git a/src/main/java/com/webank/webase/front/contract/ContractService.java b/src/main/java/com/webank/webase/front/contract/ContractService.java index 3f0ae6335..258bd8c9a 100644 --- a/src/main/java/com/webank/webase/front/contract/ContractService.java +++ b/src/main/java/com/webank/webase/front/contract/ContractService.java @@ -51,7 +51,11 @@ import com.webank.webase.front.precntauth.precompiled.cns.CNSServiceInWebase; import com.webank.webase.front.precntauth.precompiled.sysconf.SysConfigServiceInWebase; import com.webank.webase.front.transaction.TransService; -import com.webank.webase.front.util.*; +import com.webank.webase.front.util.CleanPathUtil; +import com.webank.webase.front.util.CommonUtils; +import com.webank.webase.front.util.ContractAbiUtil; +import com.webank.webase.front.util.FrontUtils; +import com.webank.webase.front.util.JsonUtils; import com.webank.webase.front.web3api.Web3ApiService; import java.io.File; import java.io.FileInputStream; @@ -74,14 +78,13 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; +import org.fisco.bcos.codegen.v3.exceptions.CodeGenException; +import org.fisco.bcos.codegen.v3.wrapper.ContractGenerator; import org.fisco.bcos.sdk.v3.client.Client; import org.fisco.bcos.sdk.v3.codec.ContractCodec; import org.fisco.bcos.sdk.v3.codec.ContractCodecException; import org.fisco.bcos.sdk.v3.codec.datatypes.Address; -import org.fisco.bcos.sdk.v3.codec.datatypes.generated.tuples.generated.Tuple2; import org.fisco.bcos.sdk.v3.codec.wrapper.ABIDefinition; -import org.fisco.bcos.sdk.v3.codegen.ContractGenerator; -import org.fisco.bcos.sdk.v3.codegen.exceptions.CodeGenException; import org.fisco.bcos.sdk.v3.contract.precompiled.bfs.BFSService; import org.fisco.bcos.sdk.v3.crypto.keypair.CryptoKeyPair; import org.fisco.bcos.sdk.v3.model.CryptoType; diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java index 37b5846a0..eeefc4342 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneController.java @@ -2,6 +2,7 @@ import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqCheckMethodAuthInfo; import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqContractAdminInfo; +import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqContractStatusList; import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqProposalInfo; import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqProposalListInfo; import com.webank.webase.front.precntauth.authmanager.everyone.entity.ReqUsrDeployAuthInfo; @@ -10,6 +11,7 @@ import io.swagger.annotations.ApiOperation; import java.math.BigInteger; import java.util.List; +import java.util.Map; import javax.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.fisco.bcos.sdk.v3.transaction.model.exception.ContractException; @@ -130,5 +132,18 @@ public Boolean checkContractAvailable(@Valid @RequestBody ReqContractAdminInfo r reqContractAdminInfo.getContractAddr()); } + /** + * 查询某用户地址对合约函数的访问是否有权限 + */ + @ApiOperation(value = "query list of the contract address whether available") + @ApiImplicitParam(name = "reqContractStatusList", value = "contract status info", required = true, + dataType = "ReqContractStatusList") + @PostMapping("contract/status/list") + public Map checkContractListAvailable(@Valid @RequestBody ReqContractStatusList reqContractStatusList) + throws ContractException { + return everyoneService.listContractStatus(reqContractStatusList.getGroupId(), + reqContractStatusList.getContractAddressList()); + } + } \ No newline at end of file diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java index 890f6659b..b0101155c 100644 --- a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/EveryoneService.java @@ -21,8 +21,10 @@ import com.webank.webase.front.web3api.Web3ApiService; import java.math.BigInteger; import java.util.Arrays; +import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Map; import lombok.extern.slf4j.Slf4j; import org.fisco.bcos.sdk.v3.contract.auth.manager.AuthManager; import org.fisco.bcos.sdk.v3.contract.auth.po.ProposalInfo; @@ -171,4 +173,25 @@ public Boolean isContractAvailable(String groupId, String contractAddr) AuthManager authManager = authManagerService.getAuthManagerService(groupId); return authManager.contractAvailable(contractAddr); } + + /** + * 获取合约是否被冻结, true: available, 即not frozen + */ + public Map listContractStatus(String groupId, List contractAddrList) + throws ContractException { + if (!web3ApiService.getWeb3j(groupId).isAuthCheck()) { + throw new FrontException(ConstantCode.CHAIN_AUTH_NOT_ENABLE); + } + Map resultMap = new HashMap<>(); + if (contractAddrList.isEmpty()) { + return resultMap; + } + AuthManager authManager = authManagerService.getAuthManagerService(groupId); + + for (String contractAddr : contractAddrList) { + Boolean available = authManager.contractAvailable(contractAddr); + resultMap.put(contractAddr, available); + } + return resultMap; + } } diff --git a/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/entity/ReqContractStatusList.java b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/entity/ReqContractStatusList.java new file mode 100644 index 000000000..7ff9deb53 --- /dev/null +++ b/src/main/java/com/webank/webase/front/precntauth/authmanager/everyone/entity/ReqContractStatusList.java @@ -0,0 +1,31 @@ +/** + * Copyright 2014-2021 the original author or authors. + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ + +package com.webank.webase.front.precntauth.authmanager.everyone.entity; + +import java.util.List; +import javax.validation.constraints.NotNull; +import lombok.Data; + +/** + * batch query contract address list of contract status + */ +@Data +public class ReqContractStatusList { + + private String groupId; + @NotNull + private List contractAddressList; + +} diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSServiceInWebase.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSServiceInWebase.java index 04c70da16..c7d70d742 100644 --- a/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSServiceInWebase.java +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/CNSServiceInWebase.java @@ -15,6 +15,7 @@ import com.webank.webase.front.keystore.KeyStoreService; import com.webank.webase.front.precntauth.precompiled.bfs.BFSServiceInWebase; +import com.webank.webase.front.precntauth.precompiled.cns.entity.CnsInfo; import com.webank.webase.front.precntauth.precompiled.cns.entity.ResCnsInfo; import com.webank.webase.front.transaction.TransService; import com.webank.webase.front.web3api.Web3ApiService; @@ -57,9 +58,17 @@ public String registerCNS(String groupId, String signUserId, String contractName return bfsServiceInWebase.link(groupId, signUserId, contractName, contractVersion, contractAddress, abiData); } - public List queryCnsInfoByName(String groupId, String contractName) + public List queryCnsInfoByName(String groupId, String contractName) throws ContractException { - return bfsServiceInWebase.list(groupId, CONTRACT_PREFIX + contractName); + List bfsInfoList = bfsServiceInWebase.list(groupId, CONTRACT_PREFIX + contractName); + log.info("queryCnsByNameAndVersion bfsInfoList:{}", bfsInfoList); + // 只有link是cns的 + List cnsInfos = bfsInfoList.stream() + .filter(bfs -> CNS_FILE_TYPE.equals(bfs.getFileType())) + .map(bfs -> new CnsInfo(contractName, bfs.getFileName(), bfs.getExt().get(0), bfs.getExt().get(1))) + .collect(Collectors.toList()); + log.info("queryCnsByNameAndVersion cnsInfos:{}", cnsInfos); + return cnsInfos; } public Tuple2 queryCnsByNameAndVersion(String groupId, String contractName, diff --git a/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/entity/CnsInfo.java b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/entity/CnsInfo.java new file mode 100644 index 000000000..3b0a41d95 --- /dev/null +++ b/src/main/java/com/webank/webase/front/precntauth/precompiled/cns/entity/CnsInfo.java @@ -0,0 +1,29 @@ +/** + * Copyright 2014-2021 the original author or authors. + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + */ + +package com.webank.webase.front.precntauth.precompiled.cns.entity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CnsInfo { + private String name; + private String version; + private String address; + private String abi; +} diff --git a/src/main/java/com/webank/webase/front/transaction/TransService.java b/src/main/java/com/webank/webase/front/transaction/TransService.java index 12121a61a..8a8c59cfc 100644 --- a/src/main/java/com/webank/webase/front/transaction/TransService.java +++ b/src/main/java/com/webank/webase/front/transaction/TransService.java @@ -175,7 +175,7 @@ public String signMessage(String groupId, Client client, String signUserId, Stri String transactionDataHash = ""; try { transactionData = TransactionBuilderJniObj - .createTransactionData(String.valueOf(groupId), chainIdAndGroupId.getLeft(), + .createTransactionData(groupId, chainIdAndGroupId.getLeft(), contractAddress, Numeric.toHexString(data), "", client.getBlockLimit().longValue()); encodedTransaction = TransactionBuilderJniObj.encodeTransactionData(transactionData); transactionDataHash = TransactionBuilderJniObj.calcTransactionDataHash(client.getCryptoType(), transactionData); From 1db2ef15a807d0c54608f69fee15fc77faf8b3ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cjinzhiwen=E2=80=9D?= <724338817@qq.com> Date: Thu, 11 Aug 2022 15:32:08 +0800 Subject: [PATCH 07/18] lab3.0 --- src/main/resources/static/index.html | 2 +- .../static/js/0.58760353e63f619d0c56.js.gz | Bin 168470 -> 0 bytes ...3f619d0c56.js => 0.8104c916c339c9400abb.js} | 2 +- .../static/js/0.8104c916c339c9400abb.js.gz | Bin 0 -> 168515 bytes web/src/views/chaincode/components/code.vue | 4 ++-- web/src/views/chaincode/contract.vue | 17 +++++++++++++++++ 6 files changed, 21 insertions(+), 4 deletions(-) delete mode 100644 src/main/resources/static/static/js/0.58760353e63f619d0c56.js.gz rename src/main/resources/static/static/js/{0.58760353e63f619d0c56.js => 0.8104c916c339c9400abb.js} (71%) create mode 100644 src/main/resources/static/static/js/0.8104c916c339c9400abb.js.gz diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index b13c50a83..8da05c077 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -15,7 +15,7 @@ vertical-align: -0.15em; fill: currentColor; overflow: hidden; - }